SSH接続とは(簡単に)
異なるホストに遠隔で接続する事。
例)
パソコンA から パソコンB に接続する。
接続すると、パソコンBに新規ファイルを作ったり、削除したり、色々な操作ができる。
簡単なSSH接続の仕組み(方法)
ssh keyという鍵とIPアドレスを使用して接続する。
ssh keyには、秘密鍵と公開鍵が存在している。
秘密鍵と公開鍵はペアとなっており、お互いを認識できる。
ssh接続のやり方としては、
接続元で秘密鍵と公開鍵を作成して、接続先の /home/ユーザ/.ssh/authorized_keys ファイルに公開鍵の中身をコピーする。
※authorized_keys に書かれた公開鍵とペアになっている秘密鍵を持ったパソコン(ホスト)は接続してくることを許可するようになる。
あとは接続元から秘密鍵と接続先のIPアドレスを使用して接続する。
具体的な接続方法
例)パソコンAからパソコンBに接続して、パソコンBに新規ファイルを作成する。
接続元:パソコンA
接続先:パソコンB
パソコンAに秘密鍵と公開鍵を作成する。
~# ssh-keygen
上記コマンドで .ssh フォルダに id_rsa id_rsa.pub が作成される。
秘密鍵:id_rsa
公開鍵:id_rsa.pub (.pubはpublicの略)
コマンドを実行すると、
鍵が作成されるパス
既に同じファイル名で鍵がある場合は上書の可否
※ファイル名を指定して鍵を作成するオプションもあるので、必要なら調べて下さい。
設定するパスワード(2回聞かれるので、同じパスワードを入力)
※パスワードは空白でもOK
が聞かれますので、必要に応じて入力してください。
~# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hogehoge/.ssh/id_rsa): // 鍵が作成されるパス
/home/hogehoge/.ssh/id_rsa already exists.
Overwrite (y/n)? y // 既に一度作成しているため、上書きの可否が聞かれる。ここではyesを選択。
Enter passphrase (empty for no passphrase): // パスワード1回目 ※パスワードは入力しても表示されませんが、しっかり入力されています。
Enter same passphrase again: // パスワード2回目
Your identification has been saved in /home/hogehoge/.ssh/id_rsa.
Your public key has been saved in /home/hogehoge/.ssh/id_rsa.pub.
~
エラーが出なければ鍵が作成されます。
パソコンB(接続先)の OpenSSH を起動する
ubuntu18(私の環境)の場合
~# service ssh start
上記コマンドで ssh(sshd)サービスが起動する。
※環境によっては service ではなく systemctl とかの場合があるので、自信の環境に合わせてください。
もしかしたら、OpenSSHサービスがインストールされていない場合があるのでその場合はまずインストール
~# sudo apt install openssh-server
上記でインストールできる。
このコマンドも自身の環境に合わせてください。
パソコンB(接続先)でSSH接続用のユーザ作成(既に作成済みのユーザに接続する場合はこの工程は省略可)
~# sudo su
rootユーザに変更する。
~# adduser -m {ユーザ名}
これでユーザ作成可能。
-m オプションをつけることで、ユーザのホームディレクトリが作成されるため、つけて置く方が良い。
追記:ubuntu22.04では -mオプションがなくなり、オプション無しでもユーザディレクトリが作成される。
passwd {ユーザ名}
ユーザにパスワードを設定。
特に理由が無い場合はパスワードを設定しておく方が、セキュリティ的に良い。
パソコンA(接続元)で作成した公開鍵の内容をパソコンB(接続先)にコピー
接続するパソコンBのユーザの home/ユーザ/.ssh/authorized_keys に公開鍵をコピーする。
パソコンA,B両方触れて、コピペで移せるならそれでも大丈夫。
もし無理なら、下記コマンドでも可能
~# ssh-copy-id パソコンBのユーザ名@パソコンBのIPアドレス
IPアドレスの調べかた。
~# ip a
ssh-copy-id コマンドは 接続先のsshd_config でパスワード接続が可能になっていないとダメ。
/etc/ssh/sshd_config
PasswordAuthentication yes
これがNOだとできない。
NOの場合は vim sshd_config 等で編集してください。
ssh接続
~# ssh 接続先のユーザ名@接続先IPアドレス
これで接続可能。