開発Tips ssh接続周り

以下の内容を記述しています。

公開鍵認証の設定

参考:
https://tech-blog.rakus.co.jp/entry/20210727/ssh
https://qiita.com/ongaeshi/items/bb17ebfbd4d22057c8fd

キーペアの作成

クライアント側で以下のコマンドで秘密キー、公開キーの作成。
オプションは参考サイトのおすすめそのまま。
(-t:暗号化方式、-b:キーのビット長)

$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

上記のようにキー実行で入力を求めらるが、デフォルト設定で良いので基本入力なしでEnter。
プロンプト内容は以下。

①キーペアは、保存場所を聞かれるが大抵デフォルトで良いので「ユーザルート/.ssh/id_rsa」に保存のため、入力なしでEnter

②パスワード設定を聞かれるが、パスワードが必要がなければ入力なしでEnter。(キー接続するので普通いらないはず)

③パスワードの再入力を求められるが、パスワ(以下略)

以下に示すように公開キーをサーバー側に保持するので、どのサーバーに接続するにもこの生成したキーを使う。そのため基本的に保存場所もデフォルトのままで良いです。
(デフォルトに保存すると、以下以降のコマンドでキーの配置場所のオプションを指定せずに済むので楽です。)

公開キーの配置

公開キーを接続先のサーバーに配置する。
公開キーを配置するので、接続するサーバーごとにキー作成する必要はないです。
(僕は複数作成するのかと勘違いしてました。)

scpとかで公開キー(rsa_id.pub)を直接配置してもいいらしいが、という便利コマンドがあり、必要なフォルダの新規作成、それらのパーミッション設定とか良い感じでしてくれるそうです。

キーペアを作成したクライアント側で以下のコマンドを実行。

$ ssh-copy-id user@hostname
sr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/user/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
user@hostname's password:

Number of key(s) added: 1

上記のように接続先のパスワードを求められるので、入力する。

ここまで、公開キー認証の設定が完了。
完了しているかの試しで、実際に接続してパスワードが求められなければOKです。

$ ssh user@hostname

パスフレーズ認証の禁止化

セキュリティのために、パスワードによるssh接続は禁止しましょう。
「/etc/ssh/sshd_config」ファイルを開いて変更します。(パスはLinux想定です)
(ssh接続を受け入れるデーモンの設定なのでsshdの方ですよ!ssh_configもあるので注意)

以下の設定箇所をnoに設定しましょう。

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no

書き換えたら、デーモンを再起動して設定を反映させましょう。

$ systemctl restart sshd

接続先を事前定義

クライアント側でssh接続時に接続先のIPアドレスを毎回打つのが面倒であれば下記の作業をしましょう。

「userルート/.ssh/config」に設定ファイルを追加することで、IPアドレスやポートの指定が不要になる。ファイルに以下のように記述することで接続を定義できます。

Host connection_name
    Hostname 1111.2222.3333.4444
    User user_name
    Port 22
    IdentityFile ~/.ssh/id_rsa

IdentityFileはもちろん接続に使用するキー情報の秘密キーです。

定義できたら定義名で以下のように接続しましょう。

$ ssh connection_name

configの定義には他にも色々できるので、用途に合わせて調べましょう。

参考:
https://tech-blog.rakus.co.jp/entry/20210512/ssh

SSHのポート変更

セキュリティ観点的にデフォルトの22番ポートから変更するのも良いとか。
(実際、僕のサーバーも起動しっぱなしにしてたらログイン試行されていたログが残ってた)

「/etc/ssh/sshd_config」ファイルを開いて変更します。(パスはLinux想定です)

Port=99999

sshdを再起動して設定変更を反映させます。(接続待ちしているデーモンのためsshd

$ systemctl restart sshd

sshdの接続待ちポートを変更しても、サーバーのポートが開放されていなければ外部からアクセスできません。変更先のポートの開放も行いましょう。

ポート開放についてはコチラ
http://webtech.main.jp/blog/2022/11/03/開発tips-linuxポート開放/

コメント

タイトルとURLをコピーしました