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
)を読んでみたら、色々なことができるのですね。
知りませんでした。