Machine Morning

機械学習やWebについて学んだことを記録しています。

パスワードなしでsshログインをする

sshログインはデフォルトのまま利用するとユーザー名とパスワードだけでログインできてしまう。 これでは誰でもログイン可能なので、ログイン方法をパスワードではなく、公開鍵認証に変更する。

ローカルのマシンで、

$ cd ~/.ssh

$ ssh-keygen -C ""
Enter file in which to save the key (/Users/home_dir/.ssh/id_rsa):

と出てくるのでsshキーの保存先のファイルを指定する。 -Cオプションを指定しなければ末尾に生成元のユーザー名@ホスト名が付与されてしまうので、-C ""で消す。 もちろん、ここでコメントを書いてもよい。 sshキーの生成が終わると指定した保存先に秘密鍵と、同じディレクトリに.pubという拡張子のファイルに公開鍵が生成されている。

$ pbcopy < ~/.ssh/id_rsa.pub(公開鍵のファイル)

リモートサーバー.sshがなければ作る。

$ mkdir ~/.ssh/authorized_keys

Ubuntuであればもともと~/.ssh/authorized_keysが存在する。

このauthorized_keysに先程pbcopyクリップボードにコピーした公開鍵を貼り付け保存する。 一回セッションを切断するために、ローカルサーバーからexitしターミナルを閉じる。 再度ターミナルを立ち上げ、リモートサーバーsshログインする。

$ ssh-add ~/.ssh/id_rsa(秘密鍵のファイル)

これで

$ ssh user_name@IP_address

すると、パスワードを要求されずに、sshログインできるようになる。 ログイン元のローカルサーバー秘密鍵と公開鍵を生成し、ログイン先のリモートサーバーに公開鍵を渡せば、パスワードなしのsshログインが可能になる。