Questions tagged «ssh»

SSH(安全外壳)是用于在远程计算机上安全运行命令的协议。使用此标记可解决有关配置,使用SSH客户端和服务器软件以及对其进行故障排除的问题。

2
使用SSH的一致且安全的无密码帐户方法
我必须承认,在某些情况下,我喜欢没有密码的服务器。典型的服务器容易受到任何具有物理访问权限的人的攻击。因此,在某些情况下,将其物理锁定是可行的,此后再信任任何物理访问。 基本概念 从理论上讲,当我物理上到达这样的服务器时,只需键入root登录名就可以执行无需密码的管理任务,并且不需要输入密码。这可能适用于用户帐户,但实际上并不能真正访问它们。因此,(偶尔)本地访问不需要系统密码。 远程访问服务器(用于管理或用户帐户)时,我希望始终使用SSH私钥。为刚创建的帐户设置SSH密钥非常容易,因此(常规)远程访问不需要系统密码。 # user=... # # useradd -m "$user" # sudo -i -u "$user" $ keyurl=... $ $ mkdir -p .ssh $ curl -o .ssh/authorized_keys "$keyurl" 结论是,从理论上讲,我们不会为此类用例使用任何系统密码。所以问题是,我们如何配置系统和用户帐户,以使其以一致且安全的方式发生。 本地访问详细信息 我们如何确保无需密码即可在本地访问root帐户?我认为我们不能使用passwd -d它,因为这会使root用户访问权限太宽容,并且没有特权的用户可以免费切换到root 用户,这是错误的。我们无法使用,passwd -l因为它阻止我们登录。 请注意,本地访问专门涉及使用本地键盘的访问。因此,有效的解决方案不得允许任何用户切换(无论使用su还是sudo)。 远程访问详细信息 直到最近,上述解决方案仍然有效,但现在SSH开始检查锁定的用户帐户。passwd -d由于相同的原因,我们可能无法使用。我们不能使用passwd -u它,因为它只是抱怨它将导致什么passwd -d。 有一种解决方法,该部分使用虚拟密码。 user=... echo -ne "$user:`pwgen 16`\n" | chpasswd 也可以完全关闭SSH中的锁定帐户检查功能,但是保留锁定帐户的支持并能够对其进行解锁会更好。 最后的笔记 …

1
强制命令在注销或断开连接时运行?
我正在通过SSH登录到系统,并且希望能够强制在注销时运行命令,无论是故意注销(退出Shell)还是因为我的SSH连接已断开/已终止。有什么办法设置吗?我现在最好的猜测是将登录shell更改为一个程序,该程序可以截获SSH关闭时发送的信号(SIGHUP?),然后执行命令,但是我想知道是否有更干净的解决方案。
13 ssh  logout 

2
为什么不在OpenSSH ssh的ControlPath选项中简单地使用%h?
为什么“ ssh_config(5)”联机帮助页建议该ControlPath选项至少包含%h,%p和%r占位符,以便唯一标识每个共享连接? 我认为多个会话应该通过连接到同一主机共享同一套接字。那么拥有一个简单的定义(如:)是否有意义? ControlPath ~/.cache/ssh/mux/%h 而不是这样的: ControlPath ~/.cache/ssh/mux/%r@%h:%p 根据我对第一个定义的理解,一个连接在具有不同远程用户的多个会话之间共享到不同远程端口上的同一远程主机。 我想在主机默认部分中有第一个定义,这样就足以说了ssh -o ControlMaster=no。 我想在同一本地用户发起的所有会话之间共享与同一远程主机的连接,而不管远程用户和远程端口如何。主客户端的套接字应位于本地用户的主目录下。

2
通过SSH发送功能键(F1-F12)
我有一台可以通过SSH连接到的Fedora机器。我偶尔要使用的程序之一使用功能键。问题是,我是从Android平板电脑(ASUS变压器无限远)带物理键盘的SSH'ing,但没有F1- F12键。因此,在我正在使用的终端应用程序(VX ConnectBot)决定将它们添加为功能之前,我正在寻找一种使用键盘的其余部分发送它们的方法。 我可以使用所有可打印的ASCII字符,Esc,Ctrl,Shift,Enter,和Tab。
13 ssh  terminal  android 

3
创建仅执行一个命令的UNIX帐户
有没有一种方法可以在Solaris中创建一个用户帐户,该帐户仅允许用户运行一个命令?没有登录外壳或其他任何东西。我可以使用/usr/bin/falsein 来做到这一点,/etc/passwd只是将用户吸引到ssh <hostname> <command>,但是有更好的方法吗?

2
建立SSH连接时如何指定本地端口?
我在IDC中托管了两台服务器。我只能使用端口20/21/22/23/3389 / 33101-33109建立两个服务器之间的连接。IDC网络设备将阻止其源或目标端口不在20/21/22/23/80/3389 / 33101-33109列表/范围内的任何其他数据包。但是SSH的源端口是随机的。 使用该命令 可以轻松指定一个远程端口。ssh username@server -p remote_port 那么,是否有一个ssh命令参数或其他方式可以指定本地源端口,以便我可以使用端口33101建立SSH连接? 我的网络拓扑如下:
13 ssh  networking 

2
如何列出SSH客户端可用的主机密钥算法?
所以ssh有选择HostKeyAlgorithms。用法示例: ssh -o "HostKeyAlgorithms ssh-rsa" user@hostname 我正在尝试使客户端使用服务器ecdsa密钥进行连接,但是我找不到正确的字符串。 我可以使用什么命令来获取可用列表HostKeyAlgorithms?
13 ssh  openssh 

3
可以使用nologin用户通过ssh执行命令吗?
如果用户有loginShell=/sbin/nologin,仍然可以 ssh user@machine [command] 假设用户在其主目录中具有正确的ssh密钥,可以用来进行身份验证? 我的目标是让用户保持登录状态,但仍然能够在网络上的其他几台计算机上执行命令(类似于通过“ sudo -u”使用它),并且想知道这是否合理。

2
-bash:cd:.ssh /:权限被拒绝
当我cd .ssh在终端输入时,它返回-bash: cd: .ssh/: Permission denied。现在,我无法将ssh密钥添加到ssh中。 当我输入ssh-add ~/.ssh/idname时说/Users/Dan/.ssh/idname: Permission denied。 我认为这与我输入文字有关,ls -d因为在我将其输入终端之前它可以工作吗?
13 ssh  permissions  ls 

3
ssh-add -D不会从ssh-agent删除存储的密钥
这是怎么发生的?: stan@tcpc:~/.ssh$ ssh-add -l 8192 e0:45:5e:cc:45:3e:17:2b:a6:54:6f:8d:53:1b:j2:e3 github (RSA) 2048 25:41:53:a6:45:5d:ac:eb:5c:45:f8:ce:42:a9:he:aa BITBUCKET (RSA) stan@tcpc:~/.ssh$ ssh-add -D All identities removed. stan@tcpc:~/.ssh$ ssh-add -l 8192 e0:45:5e:cc:45:3e:17:2b:a6:54:6f:8d:53:1b:j2:e3 github (RSA) 2048 25:41:53:a6:45:5d:ac:eb:5c:45:f8:ce:42:a9:he:aa BITBUCKET (RSA) 怎么不删除密钥? PS可能是这个错误?http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=472477 虽然我在Arch Linux上...
13 ssh  openssh  sshd 

3
在dns上配置ssh指纹以替换known_hosts失败
SSHFP记录是在ssh服务器上生成的,如下所示,然后将其添加到bind中的区域中: $ ssh-keygen -r www.test.us. www.test.us. IN SSHFP 1 1 ad04dfaf343a93beeb939eed1612168f7eadbed7 www.test.us. IN SSHFP 2 1 432209c72c4f0e99546d601dd96c04ce804191f9 可以通过DNS从ssh客户端获取所需的记录,如下所示: $ dig www.test.us any ;; QUESTION SECTION: ;www.test.us. IN ANY ;; ANSWER SECTION: www.test.us. 120 IN SSHFP 1 1 AD04DFAF343A93BEEB939EED1612168F7EADBED7 www.test.us. 120 IN SSHFP 2 1 432209C72C4F0E99546D601DD96C04CE804191F9 www.test.us. 120 IN A 192.168.1.50 …
13 ssh  dns  bind 

5
如何使用SSH通过另一台PC连接到PC
我有三台电脑。 PC1和PC2在专用LAN上,其中PC1被PC2称为192.168.0.2 PC2和PC3在另一个LAN上,其中PC2被PC3称为192.168.123.101 如何使用SSH 从PC3连接到PC1。 是否有类似的东西: ssh user@192.168.0.2 -via user@192.168.123.101
13 ssh 

4
.ssh / config指定伪tty分配和命令执行的方式
有什么方法可以在.ssh/config命令中指定以下内容: ssh -t remote-host "screen -dR screen_name" 这样我就可以轻松地访问远程screen会话了ssh remote-host吗? 现在,我使用自定义脚本解决了这个问题: $ cat ~/bin/sssh #!/bin/sh /usr/bin/ssh -t $1 "screen -dR ab" ~/bin停留在的第一位$PATH,但它不灵活且丑陋。 我也想找到一种方法来为我的自定义脚本实现主机自动完成。

2
Linux iptables ssh端口转发(Martian拒绝)
我有一个为我的家庭网络执行NAT的Linux网关。我有另一个网络,我想透明地将数据包转发到,但仅转发到特定IP /端口(或从特定IP /端口转发)。以下是一些可使用的IP和端口示例: Source Router Remote Gateway Remote Target 192.168.1.10 -> 192.168.1.1 -> 1.2.3.4 -> 192.168.50.50:5000 我希望Source计算机能够与Remote Target上的特定端口进行通信,就好像它可以直接从Router路由一样。在路由器上,eth0是专用网络,eth1是面向互联网的。远程网关是我可以使用的另一台Linux计算机,它可以直接路由到远程目标。 我尝试一个简单的解决方案是在路由器上设置ssh端口转发,例如: ssh -L 5000:192.168.50.50:5000 1.2.3.4 这对于Router现在可以正常工作,它现在可以本地连接到端口5000。因此,“ telnet localhost 5000”将按预期连接到192.168.50.50:5000。 现在,我想通过现在建立的ssh隧道重定向来自Source和渠道的流量。我为此尝试了NAT规则: iptables -t nat -D PREROUTING -i eth0 -p tcp -s 192.168.1.10 --dport 5000 -d 1.2.3.4 -j DNAT --to-destination 127.0.0.1:5000 由于路由器已经是我的NAT网关,因此它已经具有所需的路由规则: -A POSTROUTING …


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.