SSH配置文件别名以获取服务器上的目录

Jay*_*Jay 17 ssh alias config

我在SSH Config文件中有一个快捷方式,它工作得很好,但我想要做的是让不同的别名跳转到服务器上的不同目录.所以,如果我输入

ssh domain1
Run Code Online (Sandbox Code Playgroud)

它连接并将自动cd进入domain1的目录.

有没有办法做到这一点?就像是

Host dev1
   Hostname example.com
   User myname
   Dir domains/domain1/

Host dev2
   Hostname example.com
   User myname
   Dir domains/domain2/
Run Code Online (Sandbox Code Playgroud)

Jay*_*Jay 19

在这篇关于ServerFault的帖子,他们说你无法通过ssh配置文件完成所有操作.但是你可以使用ssh配置和你的.bash_profile或终端书呆子调用它.在ssh配置文件中添加

Host dev
  Hostname server.com
  User joe
Run Code Online (Sandbox Code Playgroud)

然后在.bash_profile中添加别名

alias domain1="ssh dev -t 'cd domains/domain1; bash'"
Run Code Online (Sandbox Code Playgroud)

这里dev指的是您在配置文件中设置的内容.

在终端中,只需输入domain1,您将被要求输入密码并直接进入目录.为您的所有域创建一个新的别名,它将使每个域的登录变得非常容易.

  • 只需删除=`alias domain1 ="ssh dev -t'cd domains/domain1; bash'"`周围的空格 (5认同)

Phi*_*ßen 12

看看 https://serverfault.com/questions/167416/change-directory-automatically-on-ssh-login

这是公认的答案

LocalCommand反正不是你想要的 那是在你的机器上运行。你要RemoteCommand。这样的事情对我有用:

  Host example.net
  RemoteCommand cd / && exec bash --login
  RequestTTY yes
Run Code Online (Sandbox Code Playgroud)

(旧答案)对于类似的用例,ssh -t也是一种选择:

ssh server -t "cd /my/remote/directory; bash --login"
Run Code Online (Sandbox Code Playgroud)

它不一样,因为它不使用 ssh 配置。但是您可以为命令定义别名并最终获得类似的效果。