如何远程列出已配置用户主目录中的目录

dot*_*hen 3 ssh

我注意到当通过ssh进入 Linux 服务器进行单行操作时, 的值~仍然是本地用户的主目录的值,而不是远程用户的主目录的值。见证本地用户dotancohen和远程用户atwood

$ whoami
dotancohen

$ ssh beta whoami
atwood

$ ssh beta ls ~/.ssh
ls: cannot access /home/dotancohen/.ssh: No such file or directory

$ ssh beta ls $HOME/.ssh
ls: cannot access /home/dotancohen/.ssh: No such file or directory

$ ssh atwood@beta ls ~/.ssh
ls: cannot access /home/dotancohen/.ssh: No such file or directory

$ ssh beta ls /home/atwood/.ssh
authorized_keys

$ ssh beta ls .ssh             
authorized_keys
Run Code Online (Sandbox Code Playgroud)

请注意,即使在连接详细信息中指定用户名,甚至使用$HOME代替~也无济于事。并不是我期望他们这样做,但值得一试。

.ssh/config如果需要,我在做单行时查找用户名没有问题,但是无法~在脚本中使用是相当不方便的。除了解析~/.ssh/config用户名之外,有没有办法绕过这个限制?最后一个例子表明,我可以假设我们在他的主目录中并引用与之相关的内容,但如果可能的话,我更愿意显式调用该目录。

如何通过 SSH oneliners 引用用户的主目录,而无需~/.ssh/config在本地进行解析?

在本地系统 Kubuntu 14.04 和远程系统 Ubuntu Server 12.04、14.04 和 RHEL 6.5 上测试。

fak*_*ker 8

你只需要转义它,这样你的本地 shell 就不会扩展它:

 ssh beta ls \~/.ssh
Run Code Online (Sandbox Code Playgroud)

或者

ssh beta 'ls ~/.ssh'
Run Code Online (Sandbox Code Playgroud)

那应该工作。