SSHの基本的な使い方のまとめ

その他
その他
0

本記事はSSHの基本的な使い方についてメモする。

スポンサーリンク

SSHとは

Secure SHellの略称であり、サーバなどにリモート接続するときに使われるコマンド。
SSHを用いることで、安全にサーバに接続できるようになる。

公開鍵認証とパスワード認証ができるが、公開鍵認証の安全性がとても高い。

スポンサーリンク

通常のSSH接続

# ポート名を指定するとき
ssh [email protected] -p PORTNUMBER

# 公開鍵認証するとき
ssh [email protected] -i ~/.ssh/秘密鍵へのパス

オプションは例えば、-p でポート番号、-i で秘密鍵、-lでユーザ名を指定する。
下の記事にオプションの一覧がある。

【 ssh 】コマンド――リモートマシンにログインしてコマンドを実行する
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「ssh」コマンドです。

sshで使う鍵ファイルは~/.ssh/に置くことが多い。

鍵の作り方

そもそも鍵をどのように作るかを知っておく必要がある。

ssh-keygenというコマンドを使うのだが、やることが多いのでこの記事では書かず、別記事を参照してもらう。
例えば、以下の記事が参考になる。(公開鍵認証方式の違いなど細かいことは書かれていないので、さらに別の記事を参照すると良い。)

お前らのSSH Keysの作り方は間違っている - Qiita
GitHubのHelpに記述されているSSH Keysの作成方法が僕の知っている作成方法と 微妙に異なっていたので、書いてみました。 以下の参考にしています。 Generating SSH keys - User Documen...

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ファイルに書いたホスト名をクリックする。

新しいウィンドウが開くので、(設定しているなら)パスワードを入力し接続を確立する。

あとは、自由に拡張機能をインストールして使う。

おわりに

セキュリティの専門家ではないので不十分なところがあれば悪しからず。
何かあればコメントいただけると嬉しいです。

スポンサーリンク
H-MEMO

コメント