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

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

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

请注意,即使在连接详细信息中指定用户名,甚至使用$HOME代替~也无济于事。虽然我并不指望它们能起到作用,但还是值得一试。

如果需要的话,我在写单行代码时查找用户名没有问题.ssh/config,但无法使用~,但无法在脚本中使用则相当不方便。除了解析~/.ssh/config用户名之外,还有其他方法可以解决这个限制吗?最后一个例子表明我可以认为我们在他的主目录中并引用与该目录相关的内容,但如果可能的话,我更愿意明确调用该目录。

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

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

答案1

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

 ssh beta ls \~/.ssh

或者

ssh beta 'ls ~/.ssh'

那应该可行。

相关内容