scpを使用するときにリモートパスのオートコンプリートを有効にする方法は?

scpを使用するときにリモートパスのオートコンプリートを有効にする方法は?

次のコマンドを使用して、ファイルをラップトップにリモートでコピーします。

scp someFile [email protected]:/home/USER/put/it/some/where/oh/damn/you/here

タブをクリックしてリモートパスをオートコンプリートできるようにしたいです。

答え1

素晴らしいオートコンプリート機能がオンになっていることを確認してください。多くのディストリビューションでこれは~/.bashrc. /etc/bash_completion

を使用してもパスワードのない認証を設定する必要がありますssh-agent

SSH接続設定は遅いため、接続を一度設定して後で使用すると、はるかに迅速に完了できます。比較的複雑な方法は、ssh -N -M target-hostマスター - スレーブ接続を確立した後にマスターSSH接続を開くことです~/.ssh/config単一コマンドで複数のSSHセッション指示(あなたの必要性ControlMasterControlPathオプション)を入手してください。

簡単な方法は、リモートファイルシステムを次の場所にマウントすることです。SSHFScpそして一般的なシェル完成と組み合わせて使用​​されます。

mkdir ~/remote
sshfs [email protected]:/home/USER ~/remote
cp -p someFile ~/remote/put/it/some/where/oh/damn/you/here

答え2

私がしなければならないのは、私の公開鍵をリモートシステムに追加することだけです。

cat ~/.ssh/id_rsa.pub | ssh [email protected] "cat - >> ~/.ssh/authorized_keys"

これでテーブルの作成がscp完了しました。

まずキーを設定する必要がある場合は、ここを確認してください。

答え3

@Gilesのように説明する、オートコンプリートが正しく設定され、コンピュータにSSHキーがあることを確認してください。

この設定を追加すると、速度が~/.ssh/config大きく異なります。

Host *
 ControlMaster auto
 ControlPath ~/.ssh/master-socket/%r@%h:%p
 ControlPersist 10s

これにより、ホストごとのマスター接続が作成されます。

10秒間、接続が自動的に終了する前にディレクトリを表示する時間が提供されます。

永続性がない場合は、接続を再作成する必要があるため、タブの完了が遅くなります。

はい

~$ scp mymachine:~/pa 商標

path/ palace/ pandas/ porn/

~$ scp mymachine:~/path/to 商標

~$ scp mymachine:~/path/to/file 商標

答え4

scpを使用する代わりにlftpに切り替えることができます。これは、あなたが探しているオートコンプリート機能(ワイルドカードなど)を含む、ftp、sftp、およびsshを介したファイル転送のための優れた一貫したインターフェースを提供します。

lftpfish://user@machine

上記でscpで行ったように、sshを介して接続を開きます。多くのコンピュータではsftp://もサポートしていますが、私の経験ではこれが優れています。

関連情報