sshの基本
sshをインストール、設定しました。 調べながら設定していくと何をどうしたか忘れてしまい、エラーがでても原因を探れなくなる事案が発生したため、これからは自分が設定した手順をメモしていくことにします。
sshとは
ネットワークを介して別のコンピュータにログインし操作するためのソフトウェアの一つ。公開鍵と秘密鍵を組み合わせ通信経路を暗号化する。 参考:http://e-words.jp/w/ssh.html
sshでできること
- リモートコンソール機能(ネットワークを通してほかのコンピュータのコマンド処理プログラムを利用)
- ネットワークを通してほかのコンピュータ上でプログラムを実行
- ポートフォワーディング(コマンド処理プログラム以外にもsshの暗号化通信機能を使用する)
参考:http://www.atmarkit.co.jp/ait/articles/0605/09/news086.html
sshインストールの手順
参考:http://www.bnote.net/kuro_box/ssh_inst.shtml [https://webkaru.net/linux/ssh-prohibit-root-login/ ]
OpenSSHクライアントとOpenSSHサーバをインストール
$ sudo apt update
$ sudo apt install ssh
OpenSSHの設定(パスワード認証ログインとrootログインを禁止、Port22でログインできないようにする。)
設定ファイルsshd_configに設定する。
$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org
バックアップを取る。とても大事
$ vi /etc/ssh/sshd_config
PermitRootLogin、PasswordAuthenticationをnoにする。ポート番号を22から他のものに変える。(0~1023はウェルノウンポートという主要なプロトコルで使用されているものなので避ける。49513~65535がいいらしいです。
参考:http://sawara.me/linux/890/)
#PermitRootLogin yes → PermitRootLogin no #PasswordAuthentication yes → PasswordAuthentication no #Port 22 → Port 他の番号 `#`を外して記入する
設定が完了したらSSHを再起動する
$ sudo /etc/init.d/ssh restart
公開鍵認証
参考:https://knowledge.sakura.ad.jp/3543/
rootユーザーで直接ログインすることを禁止しても、一般ユーザーはパスワードがわかるとsshログインできてしまう。公開鍵認証を使うと、「鍵を持っている人のみ一般ユーザによるログインを許可する設定」ができる
方法
パソコン側に置く秘密鍵ファイルと、サーバー側におく公開鍵ファイルの二種類を作成する。この二つがそろって公開鍵認証によるログインが可能になる。
公開鍵の設定手順
クライアントでキーペア(秘密鍵と公開鍵)を作成
参考:http://www.tooyama.org/ssh-key.html
※ クライアント側で設定(わたしの場合はmac)
$ mkdir .ssh
.sshディレクトリを作る
$ cd ~/.ssh
移動する
$ ssh-keygen -f client_rsa -t rsa -b 2048
- ssh-keygen:鍵を作成するコマンド
- -fオプション:鍵のなまえ
- 秘密鍵(id_rsa)公開鍵(id_rsa.pub)
- -t : 鍵の種類、暗号方式。RSAやDSAといったものがある。RSAにしておけばいいらしい。
- -b :鍵の暗号化強度(bits)
$ man ssh-keygen
いわく、2048でいいらしい
$ ls ~/.ssh ←鍵が作成されているか確認 client_rsa client_rsa.pub
クライエントにキーペアを登録
$ ssh-add -K ~/.ssh/client_rsa
鍵をサーバーに登録
ssh-copy-idコマンドを使う方法と手動コピーをする方法があるらしいが、手動は面倒そうなのでssh-copy-idをつかう
$ ssh-copy-id -i ~/.ssh/client_rsa.pub <ユーザ名>@<アドレス> Are you sure you want to continue connecting (yes/no)? yes <ユーザ名>@<アドレス>'s password: ←パスワード認証する(初回のみ) Number of key(s) added: 1 Now try logging into the machine, with: "ssh '<ユーザ名>@<アドレス>'" and check to make sure that only the key(s) you wanted were added
この方法では初回のみパスワード認証する必要があるのでPermission deniedのエラーが出た場合はリモートサーバのssh_configでPasswordAuthentication
をyes
にする。接続できたらもとに戻す
Port 22を変更したときウェルノウンポートを設定してしまいました。バックアップをとっていてよかった…。