我正在尝试通过桥接服务器隧道连接到服务器。到目前为止,我已经能够使用以下命令从命令 shell 正常工作:
ssh -A -t bridge_userid@bridgemachine.com ssh -A remote_userid@remoteserver.com
Run Code Online (Sandbox Code Playgroud)
但是我一直在尝试将其包装到我的~/.ssh/config
文件中,但遇到了麻烦。我试过了:
Host axp
User remote_userid
HostName remoteserver.com
IdentityFile ~/.ssh/id_rsa.eric
ProxyCommand ssh -A -t bridge_userid@bridge_userid.com ssh -A remote_userid@%h
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,我收到以下错误消息remoteserver.com
,我不确定是什么原因造成的:
ksh:SSH-2.0-OpenSSH_6.8^M:未找到
我知道当我登录时remoteserver.com
,我的外壳是/usr/bin/ksh
.
我尝试在配置文件中向 ssh 命令添加路径参数,但没有任何区别。
任何想法它可以是什么?
我想设置 ssh_config 以便在输入后ssh my_hostname
我最终进入特定文件夹。就像我会输入cd /folder/another_one/much_much_deeper/
.
我怎样才能做到这一点?
编辑。它已被标记为“How to ssh into dir ...”的重复,但这不是我的问题。
我知道我可以通过拖尾命令来执行任何命令ssh
。我的问题是关于/ssh_config
文件而不是命令。
我想在我的配置文件中设置一个与此命令具有相同结果的别名:
ssh -N devdb -L 1234:127.0.0.1:1234
Run Code Online (Sandbox Code Playgroud)
我的 .ssh/config 条目devdb
:
Host devdb
User someuser
HostName the_hostname
LocalForward 1234 127.0.0.1:1234
Run Code Online (Sandbox Code Playgroud)
我在上面的配置中放了什么才能不启动 shell?
目前我在本地和远程主机上使用 Fish 作为我的主要 shell。
我通过 ssh 和 sftp 连接到远程主机。我想在每次连接时自动打开或重用远程 tmux,默认情况下;所以我将此添加到我的~/.ssh/config
:
Host example.com
RemoteCommand tmux a; or tmux
RequestTTY yes
Run Code Online (Sandbox Code Playgroud)
问题是现在我无法通过 连接sftp
,也无法从本地 CLI 运行直接命令:
? ssh example.com ping localhost
Cannot execute command-line and remote command.
? sftp example.com
Cannot execute command-line and remote command.
Connection closed
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:如何定义在打开新的交互式 SSH 会话时要执行的默认命令,但使其可覆盖?
我知道我可以通过以下方式在 ssh 配置文件中转发多个端口:
Host name
HostName yam.myHost.edu
User myUserName
LocalForward 5901 127.0.0.1:5901
LocalForward 5902 127.0.0.1:5902
[...]
LocalForward 5910 127.0.0.1:5910
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法来转发一系列端口而无需为端口添加额外的线路?像LocalForward 5901-5910 127.0.0.1:5901-5910
什么?
如果我运行以下命令,我会得到以下输出:
-bash-3.2$ ssh -o "StrictHostKeyChecking no" 192.168.1.77
Warning: Permanently added '192.168.1.77' (RSA) to the list of known hosts.
Last login: Fri Jul 4 10:49:11 2014 from chlorine.example.com
Sun Microsystems Inc. SunOS 5.10 Generic January 2005
-bash-3.2$
Run Code Online (Sandbox Code Playgroud)
我想运行这个命令,不将 192.168.1.77 添加到已知主机列表中,但仍然允许成功登录。
是否有允许这样做的 SSH 选项?我已经浏览了man
页面,ssh_config
并且尝试了所有可能的选项,例如设置但"CheckHostIP no"
没有成功。
本地和远程系统都运行 Solaris 10。
如有必要,我可以$HOME/.ssh/known_hosts
在建立连接之前备份我的文件,并在建立连接后恢复它,但是如果有一个 SSH 选项可以让我避免这样做,那么我更愿意使用它。
我有一个通过 ssh 连接的主机。有时我在同一个网络内,可以直接通过 ssh 进入它,有时我在它之外,我需要使用代理。
因为通过代理服务器的 ssh 比直接慢得多,我想设置我的 ssh 配置,以便我尝试直接连接,如果失败则回退到代理。
目前配置如下:
Host proxy_server
User user
Port port
Hostname some_domain
Host target_host
User user
Port port
Hostname ip_addr_of_host
Match exec not_inside_network
ProxyCommand ssh -W %h:%p proxy_server
Run Code Online (Sandbox Code Playgroud)
该target_host
条目是我的配置文件中的最后一个条目,但not_inside_network
会被与配置文件中不相关服务器的任何 ssh 连接调用。我怎样才能Match
只适用于这台服务器?
我尝试使用SFTP 链接...子菜单在Midnight Commander的两个面板之一中连接到远程服务器。不幸的是,mc 没有将我的文件传递给. 因此输入会出现错误消息~/.ssh/config
sftp
sftp://myhostalias
无法 chdir 到“/sftp://myhostalias”
这是一个内容~/.ssh/config
:
Host myhostalias
HostName server.url.domain
User myusername
IdentityFile ~/.ssh/id_rsa-myhostalias
Run Code Online (Sandbox Code Playgroud)
sftp://myusername@server.url.domain
输入我的密码后工作正常。我想,如果禁用密码身份验证,这应该不起作用。sftp myhostalias
从终端也可以正常工作。我应该使用当前 ssh 配置中的别名从 mc SFTP 链接...菜单连接到远程服务器的方式是什么?
我想根据我对服务器进行 ssh 连接的用户指定一个特定的身份文件。
例如,当 ssh 作为 user1 从主机 1 到主机 2 作为 user1
[user1@host1 ~]$ ssh user1@host2
Run Code Online (Sandbox Code Playgroud)
我想使用某个身份文件。但是,当我以 user1 身份从主机 1 到主机 2 以用户 2 身份 ssh 时,我想使用不同的身份文件
[user1@host1 ~]$ ssh user2@host2
Run Code Online (Sandbox Code Playgroud)
现在,我可以通过在命令中指定身份文件来做到这一点,
[user1@host1 ~]$ ssh -i ~/.ssh/id_user1 user1@host2
[user1@host1 ~]$ ssh -i ~/.ssh/id_user2 user2@host2
Run Code Online (Sandbox Code Playgroud)
但我很想在我的 ~/.ssh/config 文件中做到这一点。我尝试了以下方法,但似乎不起作用
Host user2@*
IdentityFile ~/.ssh/id_user2
Host user1@*
IdentityFile ~/.ssh/id_user1
Run Code Online (Sandbox Code Playgroud)
任何和所有的帮助表示赞赏。如果这必须在其他地方配置,那也很好。我只想避免在命令行中指定它。真的很想弄清楚这一点,因为这将是我问题的一个很酷的解决方案!
我想在我的 ssh 配置中使用它CanonicalizeHostname
,这样就可以添加和删除主机,而无需编辑文件。
Host bastion
ProxyJump none
Match canonical
ProxyJump bastion
ForwardAgent yes
Host *
ForwardAgent no
CanonicalizeHostname always
CanonicalDomains mydomain.co.uk
CanonicalizeMaxDots 0
CanonicalizeFallbackLocal yes
Run Code Online (Sandbox Code Playgroud)
ssh-agent 没有被转发到我的任何服务器。如果我将其更改ForwardAgent
为Host *
“是”,那么它将被转发。因为ForwardAgent
下面Match canonical
没有被解析,所以我认为存在错误,并向 OpenSSH 做了报告(该报告已被删除)。
有人向我解释说它正在按预期工作:
启用主机名规范化后,配置将被解析两次。初始阶段收集选项,然后在主机名最终确定后进行第二阶段。大多数配置选项都是“首场比赛获胜”
所以这里发生的事情是,在第一次传递时,您的“Host *”块正在被解析,并且 ForwardAgent 选项被设置为“no”。在后续传递中,“Match canonical”块中的 ForwardAgent 指令将被忽略,因为它已经设置。
我能理解。我知道它被解析了两次并CanonicalizeHostname
启用了,但我没有意识到这样做的结果。
我不明白的是避免这种情况的方法“仅在最后一次设置后备 ForwardAgent”:
Host bastion
ProxyJump none
Match canonical
ProxyJump bastion
ForwardAgent yes
Match all
CanonicalizeHostname always
CanonicalDomains mydomain.co.uk
CanonicalizeMaxDots 0
CanonicalizeFallbackLocal yes
Match canonical all
ForwardAgent no …
Run Code Online (Sandbox Code Playgroud)