SSHの使い方
SSHとは
Secure Shell。暗号や認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコル。 パスワードなどの認証部分を含むすべてのネットワーク上の通信が暗号化される。
ホスト側設定
openssh-serverをインストールしておく必要がある。これをインストールする前に、パスワードなどがしっかり設定されているかなどを確認しておくこと。
$ sudo apt-get install openssh-server
を実行すると外部からアクセスできるようになる。
$ sudo vim /etc/ssh/sshd_config
ここで各種設定をする。
Port 22
鍵の生成
鍵はクライアント側で生成することが多い。
$ ssh-keygen -t ecdsa -C "comment"
を実行するとファイル名とパスワード作成を求められるが空欄でもENTERを押せば良い。すると、「$HOME/.ssh」ディレクトリに「id_ecdsa」「id_ecdsa.pub」の2つのファイルが生成される。この内、「id_ecdsa.pub」を適当な手段でsshで繋ぎたい相手(ホスト側)に渡す。これは公開鍵なので、誰かに見られても大丈夫である。むしろ、どこからでもアクセスできる場所においておくのが便利である。逆に「id_ecdsa」は、秘密鍵なので、厳重に保管する。 公開鍵をホスト側のPCに移動したら、鍵リストに追加する。ホームディレクトリに.sshディレクトリがなければ作る。
$ mkdir ~/.ssh
ここに「authorized_keys」というファイルがあれば、以下のように追加する。
$ cat id_ecdsa.pub >> authorized_keys
なければ、新規作成してから、鍵を追加する。
SSHの接続
接続コマンドは以下の通り。ログインユーザー名と、ホストアドレスを書く。
$ ssh your_username@your_domain.com
公開鍵認証がうまく設定できていれば、これで接続ができる。失敗していると、パスワードを求められて、パスワード認証となってしまう。(sshd_confでパスワード認証が許可されている場合) 公開鍵認証を使わなくても、パスワード認証でも接続することができる。しかしこれはあまり使われない(使わないほうが良い)。
.ssh/config
sshにつなぐときに毎回アドレスを入力するのは面倒なので、よく使うものはconfigに登録しておくと良い。
$ vim ~/.ssh/config
Host local_raspi
HostName 192.168.11.2 ←ラズパイのIP
IdentityFile ~/.ssh/id_ecdsa
User kerikun11
Port 22
Host global_raspi
HostName kerikeri.top ←ドメイン
IdentityFile ~/.ssh/id_ecdsa
User kerikun11
Port 22
接続の仕方は、以下の通り。とても簡単。
$ ssh global_raspi
ローカルのポートをリモートのポートにつなげる
IP制限されているホストやLAN内の機器に外からつなぐ方法
$ ssh -L 8000:target_hostname:80 ssh_hostname
これを実行した状態でlocalhost:8000
につなぐと、ssh_hostnameからtarget_hostname:80
につないだのと同じになる。