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

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

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

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

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

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

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

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

zsh
ssh-keygen -t rsa -f ~/.ssh/id_rsa_rasp

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

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

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

サーバーへSSHでログインし、クライアントマシンの公開鍵をVimなどを使って ~/.ssh/authorized_keys に追記します。

クライアント側でSSHの設定

クライアント側で vi ~/.ssh/config を実行し、以下を記述します。

zsh
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デーモンを再起動します。

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

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

関連記事

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

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

Python学習にオススメの本をご紹介!
Pandasでデータサイエンスはじめよう!
スクレイピングにオススメの書籍

▼ Beautiful Soup4を使ったWebクローリングをはじめ、表データをpandasやOpenPyXL、matplotでデータ解析、グラフ表示などのスクレイピングのやり方が分かりやすく説明されてます。図解が多いのでPython初心者の方でも読み進められる内容となってます。