Ymotoのブログ

主にプログラミング学習記録

sshの基本

sshをインストール、設定しました。
調べながら設定していくと何をどうしたか忘れてしまい、エラーがでても原因を探れなくなる事案が発生したため、これからは自分が設定した手順をメモしていくことにします。

sshとは

ネットワークを介して別のコンピュータにログインし操作するためのソフトウェアの一つ。公開鍵と秘密鍵を組み合わせ通信経路を暗号化する。 参考:http://e-words.jp/w/ssh.html

sshでできること

  1. リモートコンソール機能(ネットワークを通してほかのコンピュータのコマンド処理プログラムを利用)
  2. ネットワークを通してほかのコンピュータ上でプログラムを実行
  3. ポートフォワーディング(コマンド処理プログラム以外にも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でPasswordAuthenticationyesにする。接続できたらもとに戻す


Port 22を変更したときウェルノウンポートを設定してしまいました。バックアップをとっていてよかった…。