SSH接続したい(ssh)
$ ssh ユーザー名@接続先ホスト名
$ ssh 接続先ホスト名 -l ユーザー名
sshはリモートサーバーに安全にログインして操作するためのコマンドです。
ユーザー名とホスト名を指定してログインします。通信は暗号化されます。
接続元と接続先でユーザー名が同じ場合、ユーザー名の指定を省略できます。
また、設定ファイル(~/.ssh/config)に接続情報やエイリアスを保存できます。
秘密鍵したい(ssh -i)
$ ssh -i ~/.ssh/id_ed25519 ユーザー名@接続先ホスト名
-iオプションで秘密鍵のパスを変更できます。
サーバーごとに秘密鍵を使い分けている場合に使用するオプションです。
管理している端末と鍵が多い場合には、
それぞれIdentityFileを設定しておくと便利です。
Host *
AddKeysToAgent yes # 秘密鍵をssh-agentに自動登録
UseKeychain yes # パスフレーズをkeychainに保存(macOSのみ)
Host github
IdentityFile ~/.ssh/id_ed25519_github # 秘密鍵のパス
IdentitiesOnly yes # 指定した鍵だけを使用
Host gitlab
IdentityFile ~/.ssh/id_ed25519_gitlab # 秘密鍵のパス
IdentitiesOnly yes # 指定した鍵だけを使用
このサンプルは、GitHubとGitLabで別々の秘密鍵を想定しています。
注釈
IdentitiesOnlyはIdentityFileで指定した鍵のみを使って認証するためのオプションです。
SSHはデフォルトで、ssh-agentに登録されている鍵や、デフォルト鍵など、
利用可能な手持ちの鍵をすべて順番に試す挙動となっています。
IdentitiesOnly yesの設定は必須ではありませんが、
使用する鍵を明示的に制御したい場合や、
セキュリティ・安定性を重視する場合には有効にするとよい設定です。
エイリアスを設定したい(~/.ssh/config)
# ~/.ssh/config
Host aliasname # エイリアス名
HostName host.example.com # ホスト名
User example # ログイン名
SSH接続の設定は~/.ssh/configで変更できます。
頻繁にログインするサーバーは「エイリアス」を設定しておくとよいです。
エイリアスを設定すると、好きな名前でSSH接続できます。
ログイン先のサーバー名が長い場合は、打ち間違いを少なくできます。
また、ローカルPCの名とリモート環境のログインユーザー名が異なる場合も、この設定で吸収できます。
一時的に設定したい(ssh -o)
$ ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no ユーザー@ホスト名
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
-oオプションで、設定ファイルのオプションを一時的に上書きできます。
上記サンプルは、パスワード認証をOFFにしたサーバーに対して、
パスワード認証でログインできないことを確認したときのコマンドです。
パスワード認証を優先させて、念のために公開鍵認証も無効にして、ログインできないことを確認しています。