sshでパスワードなしでサーバーにログインする方法【macOS・シェル】
この記事では、SSHでパスワードなしでログインする方法を紹介します。これを実現させるために、クライアント側とサーバー側で次の手順を行う必要があります。
- クライアント側でSSH鍵を作成
- サーバー側に公開鍵の内容を登録
5分もあればできるような簡単な作業なので、SSHの頻繁なパスワード入力が煩わしい方は、パスワードなしでログインできるように設定してみましょう。ただし、第三者による不正利用されないように管理には十分気をつけてください。
なお、サーバーはCentOS、クライアントマシンはMacを使用しました。
クライアント側でSSH鍵を作成
まず、クライアント側でSSH鍵を作成します。
ssh-keygen -t rsa
パスフレーズの入力を求められますが、何も入力せずにEnterで大丈夫です。
作成された公開鍵 ~/.ssh/id_rsa.pub の中身をコピーします。
サーバー側に公開鍵の内容を登録
サーバーへSSHでログインし、クライアントマシンの公開鍵をVimなどを使って ~/.ssh/authorized_keys に追記します。
たったこれだけでパスワードなしでSSHでログインできるようになりました。SSHサーバーの再起動なども不要です。ぜひサーバーへログインできるか試してみてください。
これにより scp や rsync でもパスワードなしでデータの送受信が可能になります。私はrsyncを使ってブログを更新してますので、パスワードなしでアップロードできるのは大変ありがたいです。
▼ rsyncの使い方はこちら。
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
このようにサーバーによっては、アルゴリズムを指定してあげることで接続できるようになります。
この記事が参考になりましたら
シェアをよろしくお願いします!
\