sshでパスワードなしでサーバーにログインする方法【macOS・シェル】

sshでパスワードなしでサーバーにログインする方法【macOS・シェル】
sshでパスワードなしでサーバーにログインする方法【macOS・シェル】

この記事では、SSHでパスワードなしでログインする方法を紹介します。これを実現させるために、クライアント側とサーバー側で次の手順を行う必要があります。

  1. クライアント側でSSH鍵を作成
  2. サーバー側に公開鍵の内容を登録

5分もあればできるような簡単な作業なので、SSHの頻繁なパスワード入力が煩わしい方は、パスワードなしでログインできるように設定してみましょう。ただし、第三者による不正利用されないように管理には十分気をつけてください。

なお、サーバーはCentOS、クライアントマシンはMacを使用しました。

クライアント側でSSH鍵を作成

まず、クライアント側でSSH鍵を作成します。

shell
ssh-keygen -t rsa

パスフレーズの入力を求められますが、何も入力せずにEnterで大丈夫です。

作成された公開鍵 ~/.ssh/id_rsa.pub の中身をコピーします。

サーバー側に公開鍵の内容を登録

サーバーへSSHでログインし、クライアントマシンの公開鍵をVimなどを使って ~/.ssh/authorized_keys に追記します。 たったこれだけでパスワードなしでSSHでログインできるようになりました。SSHサーバーの再起動なども不要です。ぜひサーバーへログインできるか試してみてください。

これにより scprsync でもパスワードなしでデータの送受信が可能になります。私はrsyncを使ってブログを更新してますので、パスワードなしでアップロードできるのは大変ありがたいです。

rsyncの使い方はこちら。

macOSからパスワード無しでSSHログインできない?

その後、Macからサーバーへなぜかパスワード無しでSSHログインできないようになってしまいました。なにか環境設定を変えたからだと思うのですが、次の記述を確認、修正したら解決しましたのでメモします。

サーバー側の/etc/ssh/sshd_configファイルをviで開きます。下部の記述があるかチェックします。なければ追加してください。

RSAAuthentication yes                                                                                                                                                                
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys

サーバー側のSSHデーモンを再起動します。

shell
$ /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 で以下のように追記します。
shell
Host somewhere
 HostKeyAlgorithms ssh-dss,ssh-rsa
 PubkeyAcceptedAlgorithms +ssh-rsa

このようにサーバーによっては、アルゴリズムを指定してあげることで接続できるようになります。

関連記事

最後までご覧いただきありがとうございます!

▼ 記事に関するご質問やお仕事のご相談は以下よりお願いいたします。
お問い合わせフォーム

関連記事