やりたかったこと
VPSやリモートサーバーにSSHで接続したかった。
環境
- Linux / Mac / Windows(Git Bash)
基本的なSSH接続
ssh ユーザー名@IPアドレス
ssh root@192.168.1.1
ssh root@example.com
ポートを指定する
ssh -p 2222 root@example.com
SSHキーを使って接続する
ssh -i ~/.ssh/id_ed25519 root@example.com
~/.ssh/configで設定を省略する
毎回オプションを入力するのが面倒な場合は設定ファイルに書く。
Host myserver
HostName 192.168.1.1
User root
Port 22
IdentityFile ~/.ssh/id_ed25519
設定後は以下だけで接続できる。
ssh myserver
よく使うオプション
ssh -v root@example.com # 詳細ログを表示
ssh -L 8080:localhost:80 root@example.com # ポートフォワーディング
scp file.txt root@example.com:/tmp/ # ファイルをコピー
セキュリティ設定
rootログインを無効にする
nano /etc/ssh/sshd_config
# PermitRootLogin no に変更
systemctl restart sshd
パスワード認証を無効にする
# /etc/ssh/sshd_config
PasswordAuthentication no
ハマったポイント
- 接続できない場合はファイアウォールのポート22が開いているか確認する
- SSHキーのパーミッションは600でないと使えない(
chmod 600 ~/.ssh/id_ed25519) - VPSは初回接続時にフィンガープリントの確認が出る