はじめに
備忘録
SSHでのサーバー接続のために必要な設定をまとめました。
OS | SHELL | REMARKS | |
---|---|---|---|
CLIENT | macOS Monterey | zsh |
% で表記 |
SERVER | Ubuntu 20.04 | bash |
$ で表記 |
どなたかのお役に立てれば幸いです。 |
サーバーでの事前準備
SSHのためにはサーバーをSSH接続に対応させる必要があります。
以下では、そのための事前準備の方法を紹介します。
openssh-serverのインストール
サーバー側(今回はUbuntu)にopenssh-server
をインストールします。
$ sudo apt install openssh-server
openssh-server
が入っていないとSSHできないので、初めに必ずインストールしましょう。
インストールすることでssh
のデーモンさん(sshd
)が働き始めます。
SSHのステータスを確認
以下のコマンドで確認できます。
$ sudo systemctl status ssh
サービスがactive
になっていればOKです。
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) ・・・ <= ここです
:
サービスが実行されていない場合
以下のコマンドで実行できます。
$ sudo systemctl enable ssh
$ sudo systemctl start ssh
その他
SSHを停止する
$ sudo systemctl stop ssh
SSHを無効にする
$ sudo systemctl disable ssh
鍵の生成〜登録〜接続
これまでの設定でSSHのための事前準備が整いました。
以下では
鍵を生成する
SSHに必要な鍵ペア(秘密鍵と公開鍵)は以下のコマンドで生成できます。
% ssh-keygen
-t
を利用することで暗号の種類を指定することができます。
% ssh-keygen -t rsa
% ssh-keygen -t ecdsa
% ssh-keygen -t ed25519
-b
を利用することで鍵長を指定することができます。
% ssh-keygen -t rsa -b 4096
% ssh-keygen -t ecdsa -b 384
rsa
とecdsa
は鍵長を指定できます。
ed25519
は256bit
固定のようです。
-C
を利用することで公開鍵の後ろにコメントをすることができます。
% ssh-keygen -t ed25519 -C ""
コメントの有無は認証には関係ありません。
-C
なしで鍵を生成するとusername@hostname
がコメントに設定されるようです。
プライバシーが気になる人は""
でコメントをブランクにしても良いかもしれません。
逆に大人数で管理する等の都合でたくさんの公開鍵を管理するサーバーであればコメント有りの方が誰の鍵かわかって良いかも?
ssh-keygen
を実行すると以下の文章が表示されます。
Enter file in which to save the key (/username/.ssh/id_ed25519):
Created directory '/username/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
1行目
:鍵ファイルの名前や作成場所を変える場合は入力します
2行目
:ディレクトリがなければ自動的に作られます
3, 4行目
:パスフレーズを設定する場合は入力します
:::note
パスフレーズを設定することで安全性を高めることができますが、SSHするたびにパスフレーズを入力しなければいけません。
秘密鍵が安全に管理されており、パスフレーズの入力が面倒であれば、パスフレーズの設定は見送ってもいいかもしれません。
:::
パスフレーズは後から変更することもできます。
% ssh-keygen -p -f ~/.ssh/id_ed25519
サーバーに鍵をコピー
ssh-copy-id
コマンドは以下のように書くことができます。
% ssh-copy-id ユーザー名@サーバーのipアドレス
サーバー側で鍵が書き込まれていることを確認
less
コマンドをつかってファイルの中身を見ます。
$ less ~/.ssh/authorized_keys
閲覧を終了するには、esc
を押してから:q
と入力してEnter
を押します。
サーバーにSSH接続する
ssh
コマンドは以下のように書くことができます。
% ssh -i 秘密鍵へのパス ユーザー名@サーバーのipアドレス
id_ed25519
を使う場合は以下のようになります。
% ssh -i ~/.ssh/id_ed25519 user_name@xxx.xxx.xxx.xxx
パスフレーズを設定した場合は、ssh
コマンドを実行すると秘密鍵のパスワード入力が求められます。
SSH接続を切断する
exit
コマンドで切断できます。
ユーザー名@ホスト名:~$ exit
SSHできないとき(UFWの設定方法)
ファイアウォールによってSSH接続が拒否されているかもしれません。
Ubuntuでは、UFWを設定することでアクセスを制限することができます。
SSHは22
番ポートに設定されていることが多いので、ファイアウォールの設定を確かめてみてください。
また、適切に設定することでサーバーの安全性を高めることができるので、余裕がある人は試してみてください。
https://qiita.com/010Ri/items/f37f7f5fb35265823c7c
ブログもあります