読者です 読者をやめる 読者になる 読者になる

計算物理屋の研究備忘録

Linux, Cygwin, Mac, zsh, emacs等の使い方、設定などのメモ

sshの設定

Linux

パスワードなしでsshする

公開鍵と秘密鍵

例としてlocalというローカルマシンからgateというサーバーへの接続を考える

ディレクトリの準備

localのホームディレクトリに ~/.sshディレクトリがなければ作成。パーミッションを自分だけに制限

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh

localで公開鍵と秘密鍵作成

$ ssh-keygen

鍵の保存場所とパスワードを聞かれるので、Enterを3回ほど押す。(場所はデフォルト、パスワードなしの場合)
~/.sshに以下のファイルが作成される

上が秘密鍵で下が公開鍵。 接続先のgateサーバーへscpなどでさっきの公開鍵:id_rsa.pubをコピーしておく

gateで公開鍵を登録

sshgateに接続して、ここからはgateで作業する。

~/.sshディレクトリ(なければ作成してパーミッションを700に変更)のauthorized_keysとういファイルに 先ほどのscpでコピーしたid_rsa.pubの内容を移す。authorized_keysというファイルがなければid_rsa.pubmvで移してもいい。
元からauthorized_keysがある場合はcatでファイルに追加する。

$ cat id_rsa.pub >> ~/.ssh/authorized_keys

これでパスワードなしで接続できるようになる。

鍵の名前を変えるときは

デフォルトの設定では~/.ssh/id_rsaを読み込むので、もし接続先ごとに鍵ファイルの名前を変えたければ別の名前にかえてもよい(例えばid_rsa_xxx)。そのときはsshのとき-iオプションでファイル名を指定する

$ ssh -i ~/.ssh/id_rsa_xxx username@gate.yyy.zzz.jp

ホームディレクトリが共有されている場合

NISなどで設定ファイルが共有されているマシン間の場合は同じ~/.sshディレクトリでssh-keygenして鍵を作成、~/.ssh/id_rsa.pubcatで同じディレクトリの~/.ssh/authorized_keysに追加すればよい

~/.ssh/configを編集して楽にsshする

毎回長い接続先のホスト名を打つのがめんどくさいとき、下記のように~/.ssh/configに書いておくといい
~/.ssh/configがなければ作成。パーミッション600にしておく

Host gate
    HostName     gate.yyy.zzz.jp
    User             username
    IdentityFile    ~/.ssh/id_rsa

1行目で「gate」という短い名前をつけている。usernamegateでの各自のユーザー名
これでgate.yyy.zzz.jpと打っていたのをただgateにすることができる。

多段ssh

local ==> gate ==> server
と接続したいとき、普通は まずsshgateにつないでそこからまたsshserverに繋ぐという手順を踏む。
これを~/.ssh/configを編集して
local ==> server
のように1発で接続できるようにする。上に書いた設定にもう一つ付け加える

Host gate
    HostName     gate.yyy.zzz.jp
    User             username
    IdentityFile    ~/.ssh/id_rsa

Host server
    HostName     server.yyy.zzz.jp
    User             username
    IdentityFile    ~/.ssh/id_rsa
    ProxyCommand  ssh -W %h:%p gate

このようにProxyCommandというものを使う。これからはssh serverと打つだけでgateを踏み台にしてパスワードなしでserverに接続することができる

~/.ssh/configではHostから次のHostまでがひとつのかたまりだと判断される