SSHメモ

LinuxでもBSDでも、サーバーとして立ち上げたなら遠隔操作のためにsshが用意されているはずだ。
遠隔操作の準備をしよう。

ここでは前回立ち上げたubuntu(リモート)とmacOS(ローカル)で行う。

ssh-keygenで認証鍵ペアを生成する

コマンド

$ ssh-keygen -t ed25519 -C "comment here"

ローカルでもリモート(サーバ)でも好きな方で作業する。
公開鍵はリモートに、秘密鍵はローカルに置くことになるので、
一瞬でも秘密鍵がリモートにあって欲しくない場合は、ローカルで鍵生成する。
今回はローカル(macOS)で行う。

-tオプションで種類(暗号アルゴリズム)を指定できる。
暗号技術は日進月歩、いたちごっこ。 どんどん脆弱になっていくので、暗号強度の強いものを用いること。
今日時点においてはed25519にしておけば多分大丈夫。

-Cオプションでコメントを指定できる。
コメントは公開鍵ファイル内に書き込まれる。
未指定の場合はssh-keygenを実行したユーザ名@ホスト名になるので、 知られたくない場合は何かしら指定する。

コマンド実行中、パスフレーズ入力を促される。
無しでもエラーにはならないが、入力した方が良い。

以下のファイルが生成される

~/.ssh/id_25519
~/.ssh/id_ed25519.pub

拡張子なしが秘密鍵。
.pubが公開鍵。

scpで公開鍵ファイルをリモートホストへコピーする

sshログインしたいリモートホスト上のユーザディレクトリ配下へ公開鍵ファイルをコピーする。

$ scp ~/.ssh/id_ed25519.pub user@host:/home/user/.ssh/authorized_keys

user@hostの部分はコピー先のリモートホストとユーザを指定する。
例えば、ubuntu.dekirukigasuru.comというホストのwatashiというユーザであれば 次の様になる。

$ scp ~/.ssh/id_ed25519.pub user@host:/home/user/.ssh/authorized_keys

.sshディレクトリが存在していなかった場合は作る。

鍵ファイルを失うとsshアクセスできなくなるので、注意して管理する。

ローカルホストにconfigファイルを作る

現時点ではサーバは一つだけであるが、 数が増えてきた場合に備えconfig(接続設定ファイル)を作っておく。

~/.ssh/configというファイルを作成し接続情報を書き込む。
例えば以下。

Host ubuntu
    HostName ubuntu.dekirukigasuru.com
    User watashi
    IdentityFile ~/.ssh/id_ed25519
    Port 22

意味はなんとなくわかると思う。
ベースファイルは/etc/ssh/ssh_configにある。
詳細はman ssh_configで確認できる。

sshでアクセス確認する

接続できること。

$ ssh ubuntu

ログイン先のプロンプトが表示される。

その他

ヘルプ(man ssh)を読んでみたら、色々なことができるのですね。
知りませんでした。


See also