はとのーと

エジソンノート(アイデア、思い付き、メモ)として使っています。誰かの役に立つかもしれないので公開しています。

sshについてのメモ

sshの使い方についての覚え書き。

目次:

鍵を作成する

$ ssh-keygen -t rsa -C "コメント"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/{USER}/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/{USER}/.ssh/id_rsa
Your public key has been saved in /home/{USER}/.ssh/id_rsa.pub

コメントにはメールアドレスやホスト名などを入れるらしい。

お前らのSSH Keysの作り方は間違っている - Qiita によると鍵タイプには -t ed25519 を指定すべきらしいが、手元の環境 (Ubuntu 20.04.4 LTS) では -b 2048 のようにオプションを付けても鍵長が256になってしまったのでrsaにした。

鍵の暗号強度を表示する

$ ssh-keygen -l -f id_rsa.pub
2048 SHA256:BcnumevKYATnuh/qocvTM12w88QOSpp9vnq2ke8rcdI COMMENT (RSA)

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! と言われた場合

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:Cijvu9KmqJTXNXeFteTxLXNZt6hPb+FySCFYtIwmWM4.
Please contact your system administrator.
Add correct host key in /home/{USER}/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/{USER}/.ssh/known_hosts:8
  remove with:
  ssh-keygen -f "/home/{USER}/.ssh/known_hosts" -R "[{HOST}]:{PORT}"
ECDSA host key for [{HOST}]:{PORT} has changed and you have requested strict checking.

これはknown_hostsに記録されているホスト鍵が異なる場合に表示される。 以下のようにknown_hostsからホスト鍵を削除する (上記のメッセージ内に表示されている)。

$ ssh-keygen -f "/home/{USER}/.ssh/known_hosts" -R "[{HOST}]:{PORT}"

サーバ側(sshd)

よく使うオプション
  • -d - デバッグモード。冗長な情報を出力する。サーバはforkせず、1回の接続しか受け付けない (1回の接続か失敗で終了する)
  • -e - 出力を syslog ではなく標準エラー出力に送る
  • -D - 切り離し (detach) を行わず、デーモンにならない
鍵を登録する

sshで接続したいユーザの公開鍵を {USERHOME}/.ssh/authorized_keys に追記する。

$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys

注意: 必ず >> で追記すること。もし > にすると以前の内容 (登録されていた鍵) がすべて消えてしまう。

rootログインを許可する
公開鍵認証

1. /etc/ssh/sshd_config で以下の行のコメント (行頭の #) を消す。

PermitRootLogin prohibit-password

2. root ユーザにパスワードを付ける (公開鍵認証でログインする場合にも必要)。

$ echo "root:rootpassword" | sudo chpasswd

3. 上記の「鍵を登録する」の手順で /root/.ssh/authorized_keys に公開鍵を追記する。

パスワード認証

もし公開鍵ではなくパスワードでログインさせたい場合には次のようにする。

1. root ユーザにパスワードを付ける (上記参照)

2. /etc/ssh/sshd_config で以下の行のコメント (行頭の #) を消し、右側を yes にする。

PermitRootLogin yes
PasswordAuthentication yes