秘密キーファイルとその他の機密データを含む、暗号化されたFATボリューム(互換性のため)があります。
秘密キーを使用してSSH経由でサーバーに接続したいのですが、もちろんFATはファイルのアクセス許可をサポートしていないため、アクセス許可が大きすぎるというキーを無視します。
だから今私はそれを0600のパーミッションで私のハードドライブのどこかにコピーし、それを使ってそれを安全に消去していますが、それは苦痛です。
このssh/scpコマンドラインで権限チェックをバイパスする方法はありますか?
編集:精度:OS XのTrueCryptボリュームでした。
ソリューションについて:以下の受け入れられた回答は私の問題を解決しましたが(Mac OS XでTrueCryptボリュームにあるSSHキーファイルを使用して)、これは回避策です。 「バイパスキーファイルの権限チェック」を行う方法がないようです。
私の知る限り、sshやssh-addでキーファイルの権限チェックを回避する方法はありません(そして、名前付きパイプなどでそれをだますことはできません)。さらに、実際にはsshをだます必要はありませんが、キーファイルを使用できるようにするだけです。
確かに、TrueCryptボリュームはデータをプライベートに保つことになっているので、ボリュームを世界が読めるようにマウントすること(TrueCryptのデフォルトの動作)は、実際には最適ではありません。 FATフォーマットのボリュームを使用している場合は、Dan Carleyが提案したように、マウントオプションを調整する必要があります。
TrueCrypt for OS Xではまだマウントオプションが正しくサポートされていませんが(コマンドラインインターフェイスを使用してTCを起動し、manページからマウントオプションを実行した場合でも-既に試行済みです)、OS Xはボリューム名に基づくマウントオプションのデフォルトをサポートしています。
ユーザーIDを知っている必要があります(コンピューターの最初で唯一のユーザーの場合、通常は501)。 「id -u」で取得できます。
ボリューム名が "PRIVATE"(ボリューム名は大文字)で、uidが501であるとしましょう。この行を/ etc/fstabに追加するだけです。
LABEL=PRIVATE none msdos -u=501,-m=700
このファイルを作成/編集するには、rootである必要があります(デフォルトのOSXインストールには存在しません)。
Sudo vim /etc/fstab
次回ボリュームをマウントすると、アクセス許可700と所有者ID 501が付与されます。
これはUSBドライブでも機能します(通常はFATでフォーマットされています)。
Stdinからのキーの追加は私にとってうまくいきました:
cat /path/to/id_rsa | ssh-add -k -
クレイジーな回避策として、秘密キーを含むext2ボリュームのディスクイメージを作成し、それをループデバイスとしてマウントし、そこからsshキーを使用することができます。
1MBの空のファイルを作成します。
dd if=/dev/zero of=diskimg bs=1024 count=1024
Ext2をフォーマットします(デバイスではないと表示されたらYを押します):
mke2fs diskimg
どこかに(ルートとして)マウントします。
mount -t ext2 -o loop diskimg /my/path/to/diskimg
これで、パーミッションを設定できる小さなext2ファイルシステムができました。それをマウントするスクリプトを作成し、それらの権限に、現在使用しているシステムに基づいて適切なUID/GIDがあることを確認できます(UIDが一致しない場合があるため)。また、機能するにはSudo/rootアクセスが必要です。
追加StrictModes no
から/etc/ssh/sshd_config
(およびreload/restart sshd)?
編集:おっと、このオプションはサーバー側のみです:/
私が正しく思い出せば、ssh-agent
はキーの権限をチェックしません。だからこれはうまくいくかもしれません:
[-S "$ SSH_AUTH_SOCK"] || eval $(ssh-agent)
ssh-add path/to/id_rsa
マウントオプション(umask
、uid
およびgid
)を適切に変更できますか?