Skip to content

認証情報とVault ​

sshcでは、SSH接続に使うアカウントパスワード、鍵のパスフレーズ、TOTPのセットアップキーをVaultへ保存できます。Vault自体のパスワード保護は、マシンごとに選択できます。

種類用途保存・適用単位
マスターパスワードこのマシンのVaultのロックを解除するマシンごとに設定できる
アカウントパスワードSSHサーバーのパスワード認証接続先に紐付く
鍵のパスフレーズ秘密鍵を復号する鍵に紐付く
ワンタイムパスワード(TOTP)keyboard-interactiveの認証コード接続先に紐付く

同期データは、これらとは別の暗号化キーで暗号化しています。

Vaultの保護を選ぶ ​

初回作成時、または[Settings]→[Vault]で、パスワードあり/なしを選べます。パスワードは4文字以上で、数字だけでも設定できます。短いパスワードは、ローカルファイルを持ち出された場合の保護が弱くなります。

パスワードなしでは、sshcの起動時に自動でロックが解除されます。ローカルの保護はOSアカウントとマシンのセキュリティに任せます。自動ロックと手動ロックは適用されません。同期データは、Vaultとは別の暗号化キーで暗号化されます。保護方式を変更しても保存済みの認証情報は保持されます。

アカウントパスワードを保存する ​

Vaultでは、パスワードをラベル付きで保存し、接続先へ割り当てられます。編集画面を開くと、保存済みの値をVaultから復号して、シークレットの入力欄へ読み込みます。アカウントパスワードは最初に伏せ字で表示され、表示操作の後に確認・編集できます。画面を離れたとき、Vaultをロックしたとき、保存が完了したときには、画面上の平文が破棄されます。

割り当てたパスワードは、Terminal、SFTP、ProxyJump、CLIで同じ接続先を開くときに利用されます。機能ごとに同じパスワードを設定し直す必要はありません。

新しい接続先の認証方法で[接続のときに入力する]を選ぶと、Vaultには何も保存せず、接続のときにターミナルがパスワードを尋ねます。ターミナルで入力したパスワードで接続できると、[この接続先のパスワードとしてVaultに保存しますか]と1回だけ尋ねます。[保存しない]と答えると、同じ接続先ではもう尋ねません。あとから保存するときは[Connections]の[基本]で設定します。

鍵のパスフレーズ ​

鍵のパスフレーズは、鍵画面で秘密鍵ごとに保存・編集・削除できます。ProxyJumpでは、最終接続先だけでなく、各踏み台の鍵のパスフレーズとアカウントパスワードも個別に使えます。

TOTPを自動入力する ​

  1. [Menu]→[Vault]→[OTP]の[追加]から、認証サービスが表示するBase32セットアップキー、またはotpauth://totp/... URIを名前付きで保存します。
  2. [Connections]で対象の接続先を開き、[基本]→[認証]→[ワンタイムパスワード]から保存したTOTPを選択して保存します。接続先名を手入力して紐付ける必要はありません。

OTP画面は1件を1行で並べ、名前と割り当てた接続先、現在の6桁コードと残り時間を表示します。コードを押すとコピーします。ひとつ前・ひとつ後のコードと、割り当て先のホスト(割り当ての解除)は、行の「…」から開きます。

同じVaultは[Account passwords]、[Key passphrases]、[OTP]の3画面に分かれています。値の種類ごとに一覧と登録操作を分け、必要な情報だけを表示します。CLIではsshc otp list|show|add|edit|removeを利用できます。

OTP、TOTP、Verification code、認証コードなどを明示するkeyboard-interactiveのプロンプトだけに、その時点のコードを自動入力します。たとえばVerification code:は自動入力の対象です。サーバーが入力を表示する指定を返す場合にも対応しますが、sshcが自動入力したコードをTerminalへ表示することはありません。曖昧なCodeや通常のパスワードのプロンプトにはTOTPを送りません。

Terminal、SFTP、sshc ssh(対話・非対話とも)、ProxyJumpの各踏み台で同じ割り当てが使われます。接続先やルートを変えたときの動作は、次の節で説明します。

認証要素の分離

パスワードとTOTPのセットアップキーを同じマシンのVaultに保存すると便利ですが、そのマシンを失った場合に両方の認証要素を同時に失う可能性があります。組織のセキュリティ方針で許可されている場合だけ使用してください。

接続先を変えたとき ​

アカウントパスワードとTOTPの割り当ては、割り当てたときの接続先とルートに結び付けています。次のどれかが変わると、意図しない接続先へ送らないよう、その割り当てを使いません。

  • HostName、User、Port
  • ProxyJumpの踏み台、ProxyCommand
  • StrictHostKeyChecking、HostKeyAlias、HostKeyAlgorithms、認証方式、ForwardAgent
  • 接続に付けたVPNプロファイル(付ける、外す、別のプロファイルに変える、付けていたプロファイルを削除する)

VPNプロファイルを含めるのは、同じHostNameでも、VPNが違えば別のネットワークのマシンの場合があるためです。削除したプロファイルと同じ名前で作り直して付け直しても、割り当ては使いません。削除の前に接続からプロファイルを外していた場合も同じです。VPNプロファイルの名前を変更した場合と、プロファイルを編集した場合は、割り当てはそのまま使えます。別のネットワークのVPNに切り替える場合は、新しいプロファイルを作成して接続に付け替えてください(接続ごとのVPN)。

使われなくなったアカウントパスワードは、[Connections]の[基本]の認証の節に表示されます。[基本]で[基本設定を保存]を押すと確認のダイアログが表示され、[保存して再確認]を押すと、割り当て済みのパスワードとワンタイムパスワードを変更後の接続先で使います。

ロックとパスワード変更 ​

sh
sshc vault status
sshc vault lock
sshc vault change-password

Vaultをロックしても、すでに開いているSSHセッションは切断されません。ただし、新たに認証情報を使う操作はできなくなります。パスワードを設定したVaultは、既定では利用者の操作によってVault内のシークレットを最後に読み書きしてから12時間が過ぎると自動的にロックされます。[Settings]→[Vault]で、自動ロックまでの時間をプリセットごとに変更するか、自動ロックを無効にできます。パスワードなしのVaultには自動ロックは適用されません。