この記事は,2020 UEC Advent calendarの12/03の記事になります.
ほぼリモートで演習等を行っているようなので,大学の教育用サーバにSSHで接続して演習用のコードを実行することが多くなっていると思います.
何も設定をしていない状態では,SSH接続時に毎回パスワード入力を求められてしまい非常に面倒くさいことになります.
そのため,鍵認証方式の設定を進められることが多いですが,多く見られる解説ではsftpなどで公開鍵ファイルを送り,それをサーバの$HOME/.ssh/authorized_keys にコピーし,権限を適切に設定するというもので初心者にはあまり優しくありません.
そこで,簡単に公開鍵をサーバにコピーするコマンドを紹介します。
# 基本こっち
ssh-copy-id -i ${path to public key} ${USER}@${target_host}
# 次のコマンドは,ssh-copy-id コマンドが存在しなかった場合に使用する.
cat ${path to public key} | ssh ${USER}@${target_host} "mkdir -p ~/.ssh; cat >> ~/.ssh/authorized_keys"
上記コマンドの,${path to public key}
は,ローカルコンピュータの公開鍵へのパス,${USER}@${target_host}
の部分は,普段SSH接続時に接続先にしている文字列に置き換えてください.
もし,$HOME/.ssh/config に設定を書いていて ssh server
のように指定している場合は,server を指定します.
このコマンドを使用すると,指定した公開鍵を適切な場所に追加書き込みされます.
手動で公開鍵のコピー作業を行うと,過去に設定したほかのPCの公開鍵を削除してしまうという事故が起こってしまう場合がありますが
上記コマンドを使用すると人間が介在する部分がほぼないため事故が起こりにくいです.
もし,詳しく正確な解説が欲しい場合は,manページを確認してください.