我可以SSH到特定目录吗?


9

我每天都通过SSH连接到许多不同的服务器,其中一些服务器的网站具有不同的文件系统结构。每次更换服务器时,我都必须弄清楚要去到我真正想要的文件的位置(因为我很少要进入~)。

我使用Fabric文件自动执行所有操作(推送到git,自动SSH到服务器以从git中提取,重新启动Web应用程序,更改依赖项等),所以我想知道是否也不能告诉我我想要SSH到正确的目录中,这样我就fab ssh可以在正确的位置运行并正常进行SSH会话,并立即开始工作。

但是,这与Fabric无关。请忽略它。Fabric只是在运行一批命令。我的论点是ssh命令。这就是我要告诉Fabric运行的内容。

因此,如何我可以sshcd到上登录一个特定的目录?

注意:这不能是服务器或用户范围的东西。我在某些服务器上的一个用户下有多个网站,因此粘贴某些~/.bashrc内容对我不起作用。

Answers:


9

好吧,我知道我可以在登录时运行某些东西,但是我知道运行后它将立即退出。我现在记得的是,我可以在远程服务器上尽可能多地运行。您可以将命令链接在一起!

ssh user@server -t "cd /websites/website ; /bin/bash"

现在我可以告诉面料去做,我们已经走了。简单。


我确实说过,它与Fabric无关,但这也是基于上述内容,我的Fabric脚本的新部分:

def ssh():
    ''' SSH into the remote server at the correct directory '''
    local('ssh -t -p%(port)s %(server)s "cd %(remote_dir)s ; /bin/bash"' % {
        'server': server_host,
        'port': server_port,
        'remote_dir': remote_dir,
    })

我将相同的脚本链接在一起,因此变量(server_hostserver_portremote_dir)从站点到站点的变化。

因为Fabric可以处理出站连接,所以您也可以这样做:

def ssh():
    ''' SSH into the remote server at the correct directory '''
    run('cd %s ; /bin/bash' % remote_dir)

确实可以,但是输出之前是Fabric的字符串。这使提示的时间超过了80个字符,而当我获得大量解析度时,这对我来说太了:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.