sshでパスワードなしでサーバーにログインする方法【macOS・シェル】
この記事では、SSHでパスワードなしでログインする方法を紹介します。これを実現させるために、クライアント側とサーバー側で次の手順を行う必要があります。
- クライアント側でSSH鍵を作成
- サーバー側に公開鍵の内容を登録
5分もあればできるような簡単な作業なので、SSHの頻繁なパスワード入力が煩わしい方は、パスワードなしでログインできるように設定してみましょう。ただし、第三者による不正利用されないように管理には十分気をつけてください。
なお、サーバーはCentOS、クライアントマシンはMacを使用しました。
クライアント側でSSH鍵を作成
まず、クライアント側でSSH鍵を作成します。
ssh-keygen -t rsa -f ~/.ssh/id_rsa_rasp
パスフレーズの入力を求められますが、何も入力せずにEnterで大丈夫です。
作成された公開鍵 ~/.ssh/id_rsa_rasp.pub の中身をコピーします。
サーバー側に公開鍵の内容を登録
サーバーへSSHでログインし、クライアントマシンの公開鍵をVimなどを使って ~/.ssh/authorized_keys に追記します。
クライアント側でSSHの設定
クライアント側で vi ~/.ssh/config を実行し、以下を記述します。
Host rasp.local
HostName rasp.local
User pi
IdentityFile ~/.ssh/id_rsa_rasp
IdentitiesOnly yes
ホスト名やユーザー名は、環境に合わせて適宜変更してください。これで設定は完了です。
パスワードなしでSSHで接続できるか確認してみてください。
macOSからパスワード無しでSSHログインできない?
その後、Macからサーバーへなぜかパスワード無しでSSHログインできないようになってしまいました。なにか環境設定を変えたからだと思うのですが、次の記述を確認、修正したら解決しましたのでメモします。
サーバー側の/etc/ssh/sshd_configファイルをviで開きます。下部の記述があるかチェックします。なければ追加してください。
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
サーバー側のSSHデーモンを再起動します。
$ /etc/rc.d/init.d/sshd restart
以上で無事、Macからパスワード無しでSSHログインできるようになりました。
エラー対処: port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss
その後の運用で、新しいクライアント端末からSSH接続しようとすると「port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss」のようなエラーが出て接続できませんでした。対処方法としては次のとおりです。
$ vi ~/.ssh/config で以下のように追記します。Host somewhere
HostKeyAlgorithms ssh-dss,ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
このようにサーバーによっては、アルゴリズムを指定してあげることで接続できるようになります。