gvfsマウントへのショートカットを作成したい(シェルからマウントすることを好む)。これを行うには、パスワードを入力しftp://
て接続する必要がないことが非常に必要です/便利です。sftp://
現在私が知っている唯一の方法は次のとおりです。
echo 12345 | gvfs-mount sftp://[email protected]/
ファイルに対する権限700
(またはファイルに対する権限100
)を付与することはできますが、これが安全かどうかはわかりません。アイテムより.netrc
悪いですか?わかりました。ただし、ほとんどのサーバーではシェルssh-copy-id
にアクセスできません。sftp
私のアプローチにはより良い(標準的な)選択肢がありますか?パスワードを保存するときに何をしますかnautilus
?caja
答え1
私もあなたと同じように、コマンドラインからファイルシステムをマウント/マウント解除するのが好きです。
標準入力オプションについて
かなり安全かどうかはよくわかりません。 .netrcプロジェクトより悪いですか?
多くのシステムでは、プロセス名とコマンドラインパラメータがすべてのユーザーに表示されることに注意してください。たとえば、Linuxでは、grep -a . /proc/*/cmdline
すべてを見るにはこれを行います。
つまり、bashを含む一部のシェルでは、echo
これは組み込みコマンドであるため、プロセスは開始されません。
だから私が知っている限り比較してはいけません.netrc
。それにもかかわらず、ファイル権限を再確認してください。
SFTP
gvfs-mount sftp://somehost/somepath
作業にパスワードは必要ありません。 (今テストに成功しました。)
推奨される解決策は、パスワードをどこにでも保存するのではなく、キーベースの認証を使用することです。
例えば認証 - パスワードのないSSHログインを設定するには? - Ubuntuに尋ねるそしてSSHキーを別のコンピュータにコピーする最も簡単な方法は何ですか? - Ubuntuに尋ねる(Ubuntu用に書かれていますが、他のUnicesでも同じように動作します。)
ssh-copy-idについて知っていますが、ほとんどのSFTPサーバーのシェルにアクセスできません。
ssh-copy-idは便利なショートカットです。キーベース認証を設定するためにシェルアクセスは必要ありませんが、ホームディレクトリへのアクセスは必要です。
~/.ssh/
SFTPを介して対話的にファイルにアクセスできる場合は、管理者がこれを防ぐために注意しない限り、SFTPを設定できますが、~/.ssh/authorized_keys
そうすると怒りを引き起こす可能性があります。実際、管理者は次のようにする必要があります。奨励するユーザーがキーベースの認証を設定します。どのポリシーがあるかを確認してください。
キーのみを設定する必要がある場合は、キーをコピーしてください。人々上記の(プライベート)キーファイルを(おそらく)名前付きディレクトリのリモート~/.ssh/id_rsa.pub
ファイルに作成し、権限を設定します(あなたのための読み取り/書き込み、他の人には影響しません)。.ssh
authorized_keys
600
ファイル転送プロトコル
FTP URLに関する従来の答えは、~/.netrc
説明されているようにaを使用することです。https://askubuntu.com/a/359802/68124。
ああ、を含む多くのFTPクライアント(以前と新規)ではうまく動作しますがcurlftpfs
(少なくともUbuntu 14.04では)gvfsmount
無視します。
curlftpfs
あなたのユースケースに適している可能性があります。主な違いは、gvfs-mount
マウントポイントを計算する代わりにマウントポイントを選択することです。
curlftpfs ftp://host/ ~/mymountpoint
SFTPを再利用する
このオプションが好きな場合は、curlftpfs
SFTP URLを検討してください。
sshfs host:/some/remote/path ~/myothermountpoint
sshfsにシェルアクセスが必要かどうか疑問に思うなら、Wikipediaは次のように言います。クライアントは、SFTP(SSHファイル転送プロトコル)を介してリモートファイルシステムと対話します。
最後の言葉:明示的なマウントポイントが必要なツールの場合は、まず正しいパスに空のディレクトリを作成することを検討してください。何度も試したりオプションを変更したりする場合は、再インストールfusermount -u somepath
する前に削除する必要があります。
答え2
同様の方法を使用して、expect
すべての接続に資格情報を提供できます。非常に安全ではありませんが、お客様のニーズに適しています。
#!/usr/local/bin/expect --
set timeout -1
spawn gvfs-mount {args}
expect "User"
send "joe\n"
expect "Password:"
send "xxxxx\n"
expect eof