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 oneliners 引用用户的主目录,而无需~/.ssh/config
在本地进行解析?
在本地系统 Kubuntu 14.04 和远程系统 Ubuntu Server 12.04、14.04 和 RHEL 6.5 上进行了测试。
你只需要转义它,这样你的本地 shell 就不会扩展它:
或者
那应该行得通。