Think SSH

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

認証方式

sshでサーバーに入るためには、パスワードを入力する方法と公開鍵を使う方法のどちらか2種類の方法を 使う必要があります。まあ、方法には一長一短あるよね……

  1. パスワード認証
  2. 公開鍵認証

まあどう考えても公開鍵認証やるよね。 というわけで公開鍵認証の設定をしていきます。

鍵の生成

$ ssh-keygen

とおもむろにターミナルで打つと、

Generating public/private rsa key pair.
Enter file in which to save the key (/home/***/.ssh/id_rsa):

と言われるので、お好きな名前で保存してください。 ただし、デフォルトで読み込まれるのが~/.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.nucl.ap.titech.ac.jp:~/.ssh/authorized_keys

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

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

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

接続しよう!

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

$ ssh hoge@foo.jp

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