次のコマンドを使用して、ラップトップにファイルをリモートコピーしました。
scp someFile [email protected]:/home/USER/put/it/some/where/oh/damn/you/here
タブを押してリモートパスをオートコンプリートできるようにしたい。
豪華なオートコンプリートをオンにしていることを確認してください。多くのディストリビューションでは、これは~/.bashrc
に. /etc/bash_completion
を含める必要があることを意味します。
パスワードなしの認証を設定する必要があります。つまり、ssh-agent
にすでにロードされているキーを使用します。
SSH接続の確立には時間がかかるため、接続を一度だけ確立し、その後その接続を使用することで、完了までの時間を大幅に短縮できます。これを行うための比較的複雑な方法は、ssh -N -M target-Host
でマスター/スレーブ接続をセットアップした後、~/.ssh/config
でマスターSSH接続を開くことです。手順については 1つのコマンドでの複数のsshセッション を参照してください(ControlMaster
およびControlPath
オプションが必要です)。
簡単な方法は、リモートファイルシステムを [〜#〜] sshfs [〜#〜] にマウントし、通常のシェル補完でcp
を使用することです。
mkdir ~/remote
sshfs [email protected]:/home/USER ~/remote
cp -p someFile ~/remote/put/it/some/where/oh/damn/you/here
私がしなければならないことは、リモートマシンに公開鍵を追加することだけでした。
cat ~/.ssh/id_rsa.pub | ssh [email protected] "cat - >> ~/.ssh/authorized_keys"
そして、今はscp
タブ補完です。
Scpを使用する代わりにlftpに切り替えることができます。探しているオートコンプリートやワイルドカードなど、ftp、sftp、ssh経由でファイルを転送するための一貫した素敵なインターフェースを提供します。
lftp fish:// user @ machine
上記のscpと同じように、ssh経由で接続を開きます。多くのマシンはsftp://もサポートしていますが、これは私の経験ではさらに優れています。
@Gilesには said があるように、自動補完が適切に設定されていることを確認し、マシンに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
[〜#〜]タブ[〜#〜]