sshで入る時サーバーが複数あるとIDとPWがどれだったけ?となってしまう。また、毎回パスワードを入力するのが手間なのでそれを解決します。
sshのパスワードはそれぞれ異なったりまたは、複雑すぎ、長すぎるパスワードを使用していると思います。毎回パスワードを入力、毎回パスワードを調べる。あとは人的ミスでパスワード流出、使い回しのパスワードの漏洩を考えると。 鍵認証の方が安心で便利だと思う。 そして何よりパスワード打つ事が大変である。
鍵認証はどのように実装されているのかを簡単に。
windowsでコマンドを打ち込む
rsaアルゴリズムが非推奨になった為、このコマンドでの生成はしない方がいいみたいです。
最新のlinuxバージョン等で使用できないようになっている可能性もあります。Ed25519で鍵を生成してください。
#このコマンドは利用しない方が良いです
#2023年3月でrsaでアクセスできない状況がありました。
ssh-keygen
#こちらのコマンドを利用してください。
>ssh-keygen -t ed25519 -b 4096
色々聞かれますが全てエンターで作成しました。
Generating public/private rsa key pair.
Enter file in which to save the key <--どこに保存しますか
Enter passphrase (empty for no passphrase):<--パスワードを指定。無くても作成できます
Enter same passphrase again:
Your identification has been saved in C:\Users\user/.ssh/id_ed25519.
Your public key has been saved in C:\Users\user/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:VItCegj=GEdvv9nstV9EFES4DWQIDEwl/w2ftoSDNAEVCno PC@PC
The key's randomart image is:
+---[RSA 3072]----+
| . +o.o*B.+= |
| . . + o=.*+ o.|
|. E o . o..+ .+ =|
| . . o . ... +*|
| . S + .. o=|
| . + . . o|
| o . . o|
| . o . +|
| . =o|
+----[SHA256]-----+
鍵ファイルが2つ作成されました。それでは公開鍵をリモートに送りましょう。公開鍵はYour public key has been saved in C:\Users\user/.ssh/id_ed25519.pub.
これのことです。
もう一つの秘密鍵は送らないでください。
リモート(Ubuntu)ではユーザーのホームディレクトリの.sshフォルダー内に公開鍵を置きます。鍵の名前を「authorized_keys」に変更してください。.sshフォルダーが無い場合は作成してください。
$mv id_ed25519.pub ~/.ssh/authorized_keys
ローカルとリモートの設定はこれで終わりです
windowsからsshアクセスを行います。 アクセスする時自分の秘密鍵を指定してアクセスします
ssh -i ~/.ssh/id_ed25519 [email protected]
# -i キーのパス
# hoge:ユーザー名
# @以降:接続先
#
sshソフトはteratermを使用しています。その場合は画像のようにすることでパスワード無しでアクセスができます。
基本的に 「/home/username/.ssh/」にauthorized_keysを追加すればできるのだが、制約と設定が必要な場合がある。
sshのログはlinuxOSによって異なる Ubuntu「/var/log/auth.log」。CentOS「/var/log/secure」に記入されるのでtailコマンドで確認してみる。
sudo tail -F /var/log/auth.log
sshdのバージョンによってrsaアルゴリズムが非対応になったようなのでログインができない。
以下のエラーが発生した場合はアルゴリズム非対応の為です。
userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]> userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]
一応sshd_configの先頭に記入すれば動くようなのですが...
#一行目に追加
PubkeyAcceptedAlgorithms=+ssh-rsa
公開鍵のアルゴリズムを変える方が良い様なので生成方法をEd25519アルゴリズムに変更することをオススメします。
以下のエラーの場合は権限の問題でエラーが発生しています。
Authentication refused: bad ownership or modes for directory
以下の3つを確認してください。
chmod 600 /home/username/.ssh/authorized_keys
chmod 700 /home/username/.ssh
chmod 700 /home/username
sshd_config設定を変更を間違えてしまうと初期化するしか手がない状況が発生してしまうので注意してください。
必ず1セッションは常にssh接続してある状態で確認するようにしてください。
また、設定を元に戻せるようにバックアップを取るようにしてください。
公開鍵認証でログインをそもその許可していない場合もあります。
configファイルは/etc/ssh/sshd_configです。
vi /etc/ssh/sshd_config
以下二つを確認してください。
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
上記のようになっていた場合は大丈夫です。「#」はコメント機能なので先頭に「#」があれば外してください。
configの書き換えが完了したら設定の反映させます。
sudo /etc/init.d/ssh reload
systemctl reload sshd
パスワードでのログインを無効にした方がいいのか迷っている。パスワードは結局root権限sudoコマンド時に必要になるのでパスワードログインも有効にする方がいいのかどうなのか...
RSAアルゴリズムが対応しなくなった様で一時接続できない状況が発生してしまったのでEd25519を使ってください。
質問や、間違いがありましたら、お気軽にどうぞ
※お名前とコメントの内容を入力してください。
※全てこのブログ上に公表されます。
※許可なく管理者によって修正・削除する場合がございます。 詳しくはプライバシーポリシーを参照ください