本記事はSSHの基本的な使い方についてメモする。
SSHとは
Secure SHellの略称であり、サーバなどにリモート接続するときに使われるコマンド。
SSHを用いることで、安全にサーバに接続できるようになる。
公開鍵認証とパスワード認証ができるが、公開鍵認証の安全性がとても高い。
通常のSSH接続
# ポート名を指定するとき
ssh [email protected] -p PORTNUMBER
# 公開鍵認証するとき
ssh [email protected] -i ~/.ssh/秘密鍵へのパス
オプションは例えば、-p
でポート番号、-i
で秘密鍵、-l
でユーザ名を指定する。
下の記事にオプションの一覧がある。

sshで使う鍵ファイルは~/.ssh/
に置くことが多い。
鍵の作り方
そもそも鍵をどのように作るかを知っておく必要がある。
ssh-keygen
というコマンドを使うのだが、やることが多いのでこの記事では書かず、別記事を参照してもらう。
例えば、以下の記事が参考になる。(公開鍵認証方式の違いなど細かいことは書かれていないので、さらに別の記事を参照すると良い。)

config ファイルを使ってSSH接続
通常のSSH接続では毎回接続時の情報を打ち込むのが面倒なので、設定ファイル(configファイル)にその情報を書き込むことで、接続時のオプションを省略できる。
(コマンドオプションでは指定できない情報も設定できる。)
ファイルがない場合は作成する。
$ touch ~/.ssh/config
configファイルの中身は次のように記述する。
# Aサーバ
Host A
HostName IPアドレスA
User ユーザーネームA
IdentityFile ~/.ssh/秘密鍵へのパスA
Port 2222
IdentitiesOnly yes
# Bサーバ
Host B
HostName ドメインB
User ユーザーネームB
IdentityFile ~/.ssh/秘密鍵へのパスB
Port 22
IdentitiesOnly yes
複数の設定を1つのファイルの中に保存することができる。
中身の詳細はこちら。
上記のように設定したら、
$ ssh A
のようにホスト名を入力するだけで接続することができる。
SSH接続できたら22番ポートを変更する
初期接続では22番ポートに接続される。
しかし、すべての初期接続が22番ポートになるため不正なアクセス試行が秒単位で来る。
したがって、さらに安全性を高めるにはSSHのポート番号を変える必要がある。
ポート番号は1023番から65535番を使うのが良い。
そもそもポート番号とは?使えるポート番号は?についてはこちらの記事が参考になる。
例えば、今回は22222番のポートを使うことにする。
設定をする前に、ミスをすると接続できなくなるので別ターミナルでも予備でSSH接続しておく。
しないとミスったときに面倒。
sshd-config ファイルの編集
$ sudo lsof -i:22222
として何も出てこないこと、つまり22222番ポートが使われていないことを確認する。
使われている場合は、COMMAND PID ...
のように表示される。sudo
は一時的にスーパーユーザ(root)の権限を借りられるコマンドで、コマンド実行後は一般ユーザに戻る。lsof
はポートの状態を調べるコマンドで、上記のように使う。
$ sudo vi /etc/ssh/sshd_config
で、#Port 22
の部分をPort 22222
とする。(#を消して使いたいポート番号に変更する)
(viエディタの使い方はこちら。)
firewallの設定
次に新しく定義した22222番ポートへのアクセスを許可するために、firewallの設定を変える。
$ sudo firewall-cmd --permanent --add-port=22222/tcp
success
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-ports
22222/tcp
のような表示が出ればOK。
最後に、もとの22番ポートを閉じる。
$ sudo firewall-cmd --remove-service=ssh
$ sudo firewall-cmd --reload
最後にSSHサーバを再起動する。
$ systemctl restart sshd.service
これで、今までのようにSSH接続しても拒否されるはずで、22222番ポートを指定すれば接続できるようになっている。
もし接続できない場合は何かしらの設定が間違っているので、最初に用意した予備の接続から設定をさらに変更する。
VSCode でSSH接続する
VSCodeに「Remote SSH」という拡張機能をインストールする。
左下の「><」をクリックし、「Remote-SSH: Connect to Host.」をクリックし、Configファイルに書いたホスト名をクリックする。
新しいウィンドウが開くので、(設定しているなら)パスワードを入力し接続を確立する。
あとは、自由に拡張機能をインストールして使う。
おわりに
セキュリティの専門家ではないので不十分なところがあれば悪しからず。
何かあればコメントいただけると嬉しいです。
コメント