Skip to content

VS CodeでのSSHパスワード保存と認証設定

問題概要

VS CodeのRemote-SSH拡張機能を使用してリモートホストに接続する際、毎回パスワードを入力する必要がある問題に直面しています。この手間を省くための効果的な方法を探しています。

セキュリティ上の注意

パスワードの平文保存はセキュリティリスクがあります。可能な限りSSHキー認証を使用することを推奨します。

推奨解決策: SSH公開鍵認証の設定

最も安全で標準的な解決策は、パスワード認証ではなくSSHキー認証を設定することです。

ステップバイステップガイド

1. SSHキーペアの生成

ローカルマシンでターミナルを開き、次のコマンドを実行します:

bash
ssh-keygen -t ed25519 -b 4096

TIP

-t ed25519はより安全で高速な鍵タイプ、-b 4096は鍵のビット長を指定します

2. 公開鍵のリモートホストへのコピー

生成した公開鍵をリモートホストに転送します:

bash
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@remote-host

このコマンド実行時に一度だけパスワード入力を求められます。

3. SSH設定ファイルの編集

~/.ssh/configファイルを編集して接続設定を最適化します:

ssh-config
Host my-remote-host
  HostName remote-host-ip-or-domain
  User username
  Port 22
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_ed25519

4. 接続テスト

ターミナルで接続テストを行います:

bash
ssh my-remote-host

パスワードなしで接続できれば設定は成功です。

代替方法

SSHエージェントの使用

SSHキーにパスフレーズを設定している場合、SSHエージェントを使用してパスフレーズをキャッシュできます:

bash
# SSHエージェントの起動
eval "$(ssh-agent -s)"

# キーのエージェントへの追加
ssh-add ~/.ssh/id_ed25519

INFO

VS CodeはデフォルトでシステムのSSHエージェントを使用します。エージェントが起動していれば、パスフレーズは一度入力するだけですみます。

プラットフォーム別の追加オプション

Windowsの場合

bash
# PowerShellでキー生成
ssh-keygen -t rsa -b 4096

# 公開鍵内容の表示
Get-Content $env:USERPROFILE\.ssh\id_rsa.pub

macOSの場合

Keychain AccessをSSHエージェントとして使用できます:

bash
# キーチェーン連携の有効化
ssh-add --apple-use-keychain ~/.ssh/id_ed25519

注意点とトラブルシューティング

よくある問題

  1. 権限設定の問題

    • ~/.sshディレクトリ: 700 (drwx------)
    • 秘密鍵: 600 (-rw-------)
    • 公開鍵: 644 (-rw-r--r--)
    • authorized_keys: 600 (-rw-------)
  2. リモート側の設定確認/etc/ssh/sshd_configで公開鍵認証が有効になっていることを確認:

    PubkeyAuthentication yes
    PasswordAuthentication no  # セキュリティ向上のため無効化推奨

接続テストコマンド

詳細なデバッグ情報を表示:

bash
ssh -v user@remote-host

セキュリティに関する推奨事項

重要

パスワードを平文で保存する方法(sshpassなど)は、セキュリティ上の重大なリスクがあるため推奨しません。これらの方法は、どうしてもSSHキー認証が使用できない状況でのみ検討してください。

まとめ

VS CodeでSSH接続時のパスワード入力を省略するには、SSH公開鍵認証を設定することが最も安全で効果的な方法です。一度設定すれば、パスワード入力なしでシームレスにリモートホストに接続できるようになります。

適切な権限設定と定期的なキーのローテーションにより、セキュアなリモート開発環境を維持しましょう。