外部ストレージのキーを使用するSSH - 権限?

外部ストレージのキーを使用するSSH - 権限?

私のアカウントとサーバーにログインするためのSSHキーセットがあります。しかし、基本的な職場プロファイルをUSBドライブに移動した後(同期化や使いやすさなどの理由で)まっすぐ認証には構成ファイルのSSHキーを使用しますが、ローカルコピーを作成する必要があります。

一般的なSSHワーク​​フローは通常進行します。

ssh-add $HOME/.ssh/id_server_key 
ssh username@domain

問題なく動作します。しかし、すべてのコンピュータに私のキーのコピーがあるのを防ぐために、そのキーをvfatしなければならない次のようになります。

ssh-add  /run/media/myself/USB/.ssh/id_server_key
ssh username@domain

...これはうまくいきません。 SSHは私を守るためにいくつかのことをすることについて文句を言います。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@警告:保護されていない秘密鍵ファイルです! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@ @
「id_server_key」の権限 0644 がオープンしすぎます。
あなたの秘密鍵ファイルは他の人がアクセスできないはずです。
秘密鍵は無視されます。
無効な権限:キーを無視する:id_server_key
権限が拒否されました(公開鍵)。

わかりますが、実はそうではありません。本物この状況で私を守ってください。

USBドライブはfmaskを使用してディストリビューションに自動的にマウントされます022。 fmaskを使用してUSBドライブをアンマウントして再マウントする077ことはできますが、(1)毎回スーパーユーザー権限が必要です。(2)SSHキーだけでなく、デバイス上のすべてのファイルにも影響します。

umaskいくつかのヒントやコツで見たように、以前に使用されたことがあっても、キーへのシンボリックリンクを作成してみました。

cd .ssh
umask 077
ln -s /run/media/myself/USB/.ssh/id_server_key 

ただし、この方法ではシンボリックリンクに権限を使用できないため、何も取得できません。

だから何オプション私の目標ならいいえマシンにキーの物理コピーがありますか?マシンの1つは、複数の場所に移動する家庭用ラップトップであるため、いくつかのキーが見つからないようにすることに興味があります。

これまで、私は次のことを考えました。

  • ssh-addたとえば、SSHが外部デバイスのキーを(ほとんど)受け入れるように強制するオプションはありますか? (私は持っているべきだと思います。ほとんどのプログラムは「私がやっていることを知っています」という記号に従いますが、これまではマンページにはありません。
  • bindfsがディレクトリに設定されていますが、.ssh/問題はディレクトリが空ではないことです(known_hosts他のデータが含まれているため)。
  • fuse-zip- 鍵をひっくり返すことも/dev/shm可能な経路のようです。

編集する:@Gillesのコメントによると、はい、bindfs問題は解決しました。マンページを確認した後、次の呼び出しを使用して初期テストに成功しました。

bindfs -n -r -p 0700 -o nonempty /run/media/myself/USB/.ssh/ ~/.ssh 

これは他のユーザーにアクセス権をバインドせず(明らかにroot!)、読み取り専用であり、反射0700権を持ちます。この反映は、私が初めてbinfsを使い始めたときに落ちたことです。これはnonempty、既存のファイルが原因でknown_hosts元のワークフローを完全に保存します(たとえば、情報を追加できないという追加の警告メッセージを除外するknown_hosts(結局は気にしないかもしれません)。

もちろん、もともと提案されているように、作業を少し簡単にするために、ファイルシステムを別のディレクトリ(/dev/shm)にバインドしました。

私はencfsまだUSBドライブにあまり興味がないので、プライバシーの面ではこれほど十分です。

ベストアンサー1

次のように外部キーをロードできます。名前付きパイプ、例えば

$ mkfifo -m=600 fifo
$ cat /external/media/.ssh/id_server_key >fifo | ssh-add fifo

プロセス置換を使用することも可能です(bash / zshに似た構文を使用)。

$ ssh-add <(cat /external/media/.ssh/id_server_key)

上記のコマンドは次のとおりですcat /external/media/.ssh/id_server_key | ssh-add -

あなたの家匿名パイプには正しい権限があります。(検査通過:)stat <(:)

または標準入力からロードしてみてください。

$ cat /external/media/.ssh/id_server_key | ssh-add -

おすすめ記事