SSH config

僕の相方氏がかなりssh(Secure SHell)に躓いていたので、ちょこちょこっとメモする。

~/.ssh/config

普通、sshの設定ファイル(config)は/etc/ssh/sshd_configにあって、 これを編集するにはsu権限いるし、いちいちrestartしてやんなきゃだし危なっかしい。 なので、~/.ssh/configを編集してあげます。無ければ作る。

利点

特に、外部から研究室のPCに入るにはsshサーバーを経由しなければ入れないので、 多段接続の設定はしておいた方が、知っておいた方が何かと便利です。

ファイルの書き方

例えば、私は次のように記述して、楽に繋げられるように設定しています。

#はコメント
Host foo
HostName foo.jp
User hoge
ProxyCommand ssh -W %h:%p nex
Host nex
HostName bar.jp
User hoge
Host *
ForwardX11 yes
ControlMaster auto
ControlPath ~/.ssh/mux-%r@%h:%p

一つ一つの行にもちろん意味があるので、これから説明していきます。

Host,HostName,User

Hostで書いてあげた名前をそのままsshコマンドで打ちます。例えば、

$ ssh foo

と打つと、foo→ foo.jpと勝手に解釈してくれて、 さらにユーザー名もhogeだと思ってくれるので、結局

$ ssh hoge@foo.jp

と打ったのと同じ結果が得られます。

と言われるので、お好きな名前で保存してください。 ただし、デフォルトで読み込まれるのが~/.ssh/id_rsaという名前の鍵なので、 初めて生成する場合は特に何も考えずにエンターを押して構いません。 続けて、

Enter passphrase (empty for no passphrase):

と言われるので、適当なパスフレーズを打ち込んでください。

でもう一回同じパスフレーズを打つと、晴れて鍵のペアが生成されます。 この鍵ペアのうち秘密鍵(id_rsa)の方は誰にも知られないように、~/.ssh/の中に置いておいてください。 知られないようちゃんと管理しておけば、いくら使いまわしたって問題ありません。なので普通は、一回鍵を生成するだけですみます。

公開鍵のUploadとauthorized_keys

ここからは接続先のサーバーをfoo.jp、ユーザー名をhogeとします。 まずはそこに入れないとどうしようもないので、sshします。

$ ssh hoge@foo.jp

これを打ってみて、パスワードの入力を求められたら成功です。パスワードを打ち込みましょう。もし

ssh: connect to host server-name port 22: Connection refused

とか言われたら、portが開いてません。/etc/ssh/sshd_configの中に #Port 22 とか #ListenAddress 0.0.0.0 とか書いてある行があるので、 su権限でコメントアウトを消してください。

id_rsaは秘密鍵ですが、もう一個生成された方(~/.ssh/id_rsa.pub)は公開鍵と呼ばれ、接続したいサーバーに登録しておくものです。 自分のPCのターミナルから

$ scp ~/.ssh/id_rsa.pub hoge@foo.jp:~/.ssh/authorized_keys

と打てば公開鍵の登録の完了です。 2個目以降の秘密鍵を登録したいときはscpでサーバーにid_rsa.pubをコピってきて

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

ってやると幸せになれるんじゃないかな?

接続しよう!

ということで、接続する準備が整いました。こちら側のPCからコマンドラインを叩きます。

$ ssh hoge@foo.jp

これでパスワードなしで入れるようになりました!