ホストA /ユーザーaとホストB /ユーザーbが与えられ、AからBにsshが実行されますa@A$ ssh b@B
。 Bにというファイルがあるとしましょうhello.txt
。私たちが知っているように、Bにログインしてファイルを見つけたら、タブを使用してファイル名を自動入力できます。
a@A$ ssh b@B
b@B$ ls h
hello.txt
2行目の最後に「tab」と入力しました。
これでAにログインし、hello.txt
scpを使用してBからAにコピーしようとしていますが、ファイル名全体を覚えておらず、ファイルが「h」で始まることだけを覚えています。私がしたい
a@A$ scp b@B:h
次に、「tab」を押して、上記の例のように、Bから「h」で始まるファイルのリストを見てください。可能ですか?
編集する:
pLumoが提案した答えに従って試したことは次のとおりです。
$ ssh b@B
Last login: xxx
b@B:~$ ls
my_file.dat
b@B:~$ exit
logout
Shared connection to B closed.
$ cat ~/.ssh/config
Host B
Hostname B.xxxx.xx
User b
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
$ scp b@B:my_file.dat .
my_file.dat 100% 4 0.0KB/s 00:00
$ssh -fN b@B
$ scp b@B:my_
where at the end of the last line I pressed TAB, but nothing happens.
答え1
scp
タブ補完は、次のいずれかの状況に該当する場合にうまく機能します。
最初のオプション:
接続を再利用するには、次の項目に追加してください~/.ssh/config
。
Host B
User b
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
タブの完成が正しく機能するには、接続が開いている必要があります。まだ開いていない場合は、バックグラウンドで起動できます。
ssh -fN B
これは合格かもしれませんJumpHost
。
2番目のオプション:
公開/秘密鍵を使用するとscp
自動的に使用されます。欠点はscp
、毎回ログインする必要があることです。これは、確立された接続を再利用するよりも遅くなる可能性があります。