如果我有一个服务器 A,我可以使用我的 ssh 密钥登录,并且我有能力“sudo su - otheruser”,我会丢失密钥转发,因为 env 变量被删除并且套接字只能由我的原始用户读取。有没有一种方法可以通过“sudo su - otheruser”桥接密钥转发,这样我就可以使用转发的密钥(在我的情况下为 git clone 和 rsync )在服务器 B 上做一些事情?
我能想到的唯一方法是将我的密钥添加到其他用户的授权密钥和“ssh otheruser@localhost”,但对于我可能拥有的每个用户和服务器组合来说,这很麻烦。
简而言之:
$ sudo -HE ssh user@host
(success)
$ sudo -HE -u otheruser ssh user@host
Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud) 在我自己的计算机上,运行 MacOSX,我在 ~/.ssh/config 中有这个
Host *
ForwardAgent yes
Host b1
ForwardAgent yes
Run Code Online (Sandbox Code Playgroud)
b1 是运行 Ubuntu 12.04 的虚拟机。我像这样 ssh 到它:
ssh pupeno@b1
Run Code Online (Sandbox Code Playgroud)
我在没有被要求输入密码的情况下登录,因为我已经复制了我的公钥。由于转发,我应该能够从 b1 ssh 到 pupeno@b1 并且它应该可以工作,而不需要我输入密码,但它没有。它要求我输入密码。
我错过了什么?
这是第二个 ssh 的详细输出:
pupeno@b1:~$ ssh -v pupeno@b1
OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to b1 [127.0.1.1] port 22.
debug1: Connection established.
debug1: identity file /home/pupeno/.ssh/id_rsa type -1
debug1: identity file /home/pupeno/.ssh/id_rsa-cert type -1
debug1: identity file …Run Code Online (Sandbox Code Playgroud) 我有一台戴尔 1U 服务器,带有 Intel(R) Xeon(R) CPU L5420 @ 2.50GHz,8 核,在 x86_64 上运行 Ubuntu 服务器内核版本 3.13.0-32-generic。它具有双 1000baseT 网卡。我已将其设置为将数据包从 eth0 转发到 eth1。
我注意到在我的 kern.log 文件中它一直挂着然后休息。这经常发生。这种情况每隔几秒钟发生一次,然后可能几分钟就可以了,然后每隔几秒钟就会恢复。
这是日志文件转储:
[118943.768245] e1000e 0000:00:19.0 eth0: Detected Hardware Unit Hang:
[118943.768245] TDH <45>
[118943.768245] TDT <50>
[118943.768245] next_to_use <50>
[118943.768245] next_to_clean <43>
[118943.768245] buffer_info[next_to_clean]:
[118943.768245] time_stamp <101c48d04>
[118943.768245] next_to_watch <45>
[118943.768245] jiffies <101c4970f>
[118943.768245] next_to_watch.status <0>
[118943.768245] MAC Status <80283>
[118943.768245] PHY Status <792d>
[118943.768245] PHY 1000BASE-T Status <7800>
[118943.768245] PHY Extended Status <3000>
[118943.768245] PCI Status <10> …Run Code Online (Sandbox Code Playgroud) 我有一个我们称之为 hub-server.tld 的服务器,它有三个 IP 地址:100.200.130.121、100.200.130.122 和 100.200.130.123。我在防火墙后面有三台不同的机器,但我想使用 SSH 将一台机器端口转发到每个 IP 地址。例如:第一台机器应该在 100.200.130.121 上的端口 22 上监听 SSH,而第二台机器应该在 100.200.130.122 上做同样的事情,对于所有机器上可能相同的端口上的不同服务,依此类推。
SSH 手册页-R [bind_address:]port:host:hostport列出了我启用了网关端口,但是当使用-R特定 IP 地址时,服务器仍然在所有接口上侦听端口:
# ssh -NR 100.200.130.121:22:localhost:22 root@hub-server.tld
Run Code Online (Sandbox Code Playgroud)
# netstat -tan | grep LISTEN
tcp 0 0 100.200.130.121:2222 0.0.0.0:* LISTEN
tcp 0 0 :::22 :::* LISTEN
tcp 0 0 :::80 :::* LISTEN
Run Code Online (Sandbox Code Playgroud)
有没有办法让 SSH 仅将特定 IP 地址上的连接转发到一台机器,以便我可以同时侦听其他 IP 地址上的端口 22,或者我必须对 iptables 做些什么?以下是我的 ssh 配置中所有不是注释/默认值的行:
Port 2222
Protocol 2
SyslogFacility AUTHPRIV
PasswordAuthentication …Run Code Online (Sandbox Code Playgroud) 我www.mydomain.com指出了一个 Azure 网站。
www.mydomain.com --- CNAME --- mydomain.azurewebsites.net
Run Code Online (Sandbox Code Playgroud)
当我访问时www.mydomain.com,一切正常。这很好。
问题是,mydomain.com不起作用。Azure 只允许 www 子域。
在某些名称服务器中,我使用 FWD 记录将根转发到 www,这很好用。我当前的名称服务器 (zoneedit.com) 没有此 FWD 记录。
是否有我们可以用来将根域转发到 www 子域的 DNS 记录?
我有:
ns1.internal带有 IP 的内部 DNS 服务器192.168.0.4。mydns.example.com和内部 IP 的外部 DNS 服务器192.168.0.5。它可以从 Internet(通过静态 NAT 规则)和本地网络访问。我正在尝试设置我的外部 DNS 服务器以将区域转发subzone.mydns.example.com到内部 DNS 服务器。内部 DNS 服务器对该区域具有权威性。
重要提示:我无法修改内部 DNS 服务器配置。但是,如果需要诊断问题,我可以阅读它。
/etc/named.conf外部 DNS 服务器上的文件:
options {
directory "/var/named";
version "get lost";
recursion yes;
allow-transfer {"none";};
allow-query { any; };
allow-recursion { any; };
};
logging{
channel example_log{
file "/var/log/named/named.log" versions 3 size 2m;
severity info;
print-severity yes;
print-time yes;
print-category yes;
};
category default{
example_log;
}; …Run Code Online (Sandbox Code Playgroud) 我在路由器后面有一台无法配置的 Ubuntu 计算机。但是我想通过 ssh 访问那台计算机。我认为 ssh 隧道是可能的,但我不知道该怎么做。我有另一台服务器,我想设置隧道。怎么做?或者也许您有其他想法如何解决这个问题?
我试过:
ssh -N user@my_server -L 22/localhost/8090
Run Code Online (Sandbox Code Playgroud)
但它说:
bind: Address already in use
channel_setup_fwd_listener: cannot listen to port: 22
Could not request local forwarding.
Run Code Online (Sandbox Code Playgroud) Windows Server 2003 具有此功能,您可以将域“example.com”的查询转发到特定名称服务器(不是默认 DNS 服务器)。
我如何在 BIND 中设置它?例如,我想设置本地 TLD 到特定本地名称服务器的转发。
绑定版本 9.6
正如 Khaled 所指出的,我们可以在 zone 子句中使用 forwarders 语句。它适用于以下配置:
zone "local." IN {
type forward;
forward only;
forwarders { 10.10.1.9; };
};
Run Code Online (Sandbox Code Playgroud) 这是在 linux 上,连接到 linux 服务器:
我喜欢 mosh,但它不支持端口转发,而且可能有一段时间不支持了,因为现在已经快一年了,而且还没有发生。
通过 ssh 进行端口转发很棒,但是因为我的笔记本电脑每天在网络之间移动数次,所以我的 ssh 会话会死掉,端口转发也是如此。
我可以编写脚本/破解一些东西来检测挂起的 ssh 并重新连接以使我的端口转发回来,但在我这样做之前,当您的源 IP 每天更改数次时,是否有另一种方法可以进行持久的端口转发(因为您使用不同的网络) )?
我认为 UDP 上的 ssh 可以解决问题,但当然 ssh 是 TCP 上的。