SSH — Secure Shell
リモートのマシンに安全に接続し、管理するためのツール。
クライアント ( ssh
する側) の設定
公開鍵の作成と登録
公開鍵と秘密鍵を作成:
ssh-keygen -t ed25519
# Generating public/private ed25519 key pair.
# Enter file in which to save the key:
# Enter passphrase (empty for no passphrase):
# Enter same passphrase again:
-t (rsa/ecdsa/ed25519/etc.)
- 作成する鍵の種類の指定。
- ed25519 の他に dsa, ecdsa, ecdsa-sk, ed25519-sk, rsa など
-f filename
-
鍵のファイル名の指定。デフォルトは
~/.ssh/id_鍵タイプ
公開鍵をサーバーに登録する。方法はそれぞれ:
サイトに登録する場合などは公開鍵をコピー&ペースト
## 公開鍵のコピー cat ~/.ssh/id_ed25519.pub | pbcopy
コマンドで送る場合 (
PasswordAuthentication yes
である必要がある):cat id_ed25519.pub | ssh ユーザー名@ipアドレス "mkdir ~/.ssh; cat>>~/.ssh/authorized_keys"
パーミッションの確認:
ls -al ~/.ssh
# total 28
# drwxr-xr-x 2 yukimatsu yukimatsu 4096 May 10 16:51 .
# drwxr-x--- 16 yukimatsu yukimatsu 4096 May 29 16:06 ..
# -rw------- 1 yukimatsu yukimatsu 342 May 10 16:51 config
# -rw------- 1 yukimatsu yukimatsu 411 Apr 25 17:30 id_ed25519
# -rw-r--r-- 1 yukimatsu yukimatsu 96 Apr 25 17:30 id_ed25519.pub
# -rw------- 1 yukimatsu yukimatsu 2320 May 1 12:45 known_hosts
# -rw------- 1 yukimatsu yukimatsu 1484 May 1 12:40 known_hosts.old
公開鍵 .pub
以外はユーザー本人だけが読み書きできる設定( -rw-------
)にする:
chmod 600 ~/.ssh/config
~/.ssh/config
の設定
一般的な接続方法:
ssh username@example.com # 毎回打つのは面倒!
そこで .ssh/config
に以下のような設定を追記:
~/.ssh/config
Host hoge
Hostname example.com # ホスト名(@のうしろ)
User username # ユーザー名 IdentityFile ~/.ssh/id_ed25519_hoge # 秘密鍵への PATH
こうすると以下の二つは等価:
ssh username@example.com
ssh hoge
rsync でリモートに接続するときも記述を省略できて便利:
rsync -auvz src/ username@example.com:dest/
rsync -auvz src/ hoge:dest/
サーバー (ssh
される側) の設定
openssh-server
をインストールして起動を確認:
sudo apt -y install openssh-server
sudo systemctl status sshd.service # Active: active (running) となっていれば起動している。
この状態でいったん同一 LAN 内の別のマシンから ssh
してみる:
ssh ユーザー名@ipアドレス
#
#
# Are you sure you want to continue(yes/no/[fingerprint])? yes
# ユーザー名@ipアドレス's password:
/etc/ssh/sshd_config
の設定
openssh-server
をインストールしたことで設定ファイルが /etc/ssh/
に生成される。 これを編集することでどの接続を許可してどれを弾くかを設定する。
/etc/ssh/sshd_config
# ssh公開鍵の種類を指定する。
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
# ルートユーザーとしてのログインを禁止する。
PermitRootLogin prohibit-password
# SSHサーバーへの認証の最大試行回数を制限する。
MaxAuthTries 5
# 公開鍵による接続を許可する。
PubkeyAuthentication yes
# パスワードによる接続を許可する。公開鍵の登録を終えたら`no`に変える。
PasswordAuthentication yes
# 空のパスワードでの接続を無効にする。
PermitEmptyPassword no
# キーボードインタラクティブ認証を無効にする。公開鍵で接続する場合は無効にしたほうが良い。
KbdInteractiveAuthentication no