Articles of ssh

将本地端口或套接字文件转发到远程套接字文件

快速的问题 – 我运行两个Linux的盒子,一个我自己的桌面和其他我的VPS。 出于VPS端的安全原因,我select了与MySQL的套接字连接( /var/run/mysqld/mysql.sock )。 我知道我可以像这样隧道: ssh -L 3307:127.0.0.1:3306 [email protected]如果我设置远程SQL服务器来侦听某个端口,但我想知道的是我可以这样做: ssh -L /path/to/myremotesqlserver.sock:/var/run/mysqld/mysql.sock从而隧道两个套接字,而不是两个端口? 一个完全可以接受的解决scheme也将本地端口转发到远程套接字文件,但在可能的情况下,我试图不在远程框上运行TCP服务器。 (是的,我知道tcp会更容易)。

PEM ssh密钥的指纹

我有一个PEM文件,我将其添加到正在运行的ssh-agent中: $ file query.pem query.pem: PEM RSA private key $ ssh-add ./query.pem Identity added: ./query.pem (./query.pem) $ ssh-add -l | grep query 2048 ef:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX ./query.pem (RSA) 如何直接从文件中获得密钥的指纹(我在ssh-agent中看到的)? 我知道ssh-keygen -l -f some_key适用于“普通”ssh密钥,但不适用于PEM文件。 如果我在.pem文件上尝试ssh-keygen,我会得到: $ ssh-keygen -l -f ./query.pem key_read: uudecode PRIVATE KEY—– failed key_read: uudecode PRIVATE KEY—– failed ./query.pem is not a public key file. 这个键开始于: […]

启用S​​SH shell访问但禁用SFTP访问

我为这个问题find了一个可行的答案,其中大部分答案都包含了为什么不这样做的build议。 但是,这是情况,什么使得它是必要的: 我有一个控制台应用程序,并且在每个用户的.profile中,都有一个用于应用程序的启动命令,并且在启动它的命令之后,有一个“退出”命令,将它们从系统中注销。 我只希望他们能够通过它提供的接口访问这个控制台应用程序。 启动时,应用程序向用户显示可以通过应用程序访问的客户端列表,每个客户端都有自己的数据目录。 用户只能访问他们需要访问的客户端。 现在问题是:如果我给用户SSH访问,他们也将能够使用SFTP客户端login,这将使他们能够直接访问应用程序的数据目录,这是非常不可取的,因为这也会给他们访问他们不应该访问的数据目录。 当使用telnet / FTP组合时,这是一件很简单的事情,但是现在我想让用户能够从互联网上的任何地方访问,我一直无法find一种方法来closures他们的SFTP,而仍然允许他们访问他们可以运行应用程序的shell。

有人正试图强制SSH访问我的服务器

巧合的是,我看着我的服务器的SSH日志(/var/log/auth.log),我注意到有人不断尝试获得访问权限: Sep 7 13:03:45 virt01 sshd[14674]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.42 user=root Sep 7 13:03:48 virt01 sshd[14674]: Failed password for root from 116.31.116.42 port 13423 ssh2 Sep 7 13:03:52 virt01 sshd[14674]: message repeated 2 times: [ Failed password for root from 116.31.116.42 port 13423 ssh2] Sep 7 13:03:52 virt01 sshd[14674]: Received […]

selectSSH端口转发接口

我有一个服务器,我们将调用hub-server.tld三个IP地址100.200.130.121,100.200.130.122和100.200.130.123。 我有三个不同的机器在防火墙后面,但是我想使用SSH将一台机器连接到每个IP地址。 例如:machine-one应在100.200.130.121的端口22上监听SSH,而machine-2应该在100.200.130.122上执行相同的操作,以此类推,以便在所有机器上可能相同的端口上执行不同的服务。 SSH的手册页中有-R [bind_address:]port:host:hostport我已经启用了网关端口,但是当使用具有特定IP地址的-R时,服务器仍然在所有接口上监听端口: 机之一: # ssh -NR 100.200.130.121:22:localhost:22 [email protected] hub-server.tld(在端口2222上侦听SSH): # 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 有没有一种方法可以使SSH只转发特定IP地址上的连接到一台机器,这样我就可以同时在其他IP地址上侦听端口22,或者我将不得不使用iptables做些什么? 这里是我的SSHconfiguration中不是评论/默认的所有行: Port 2222 Protocol 2 SyslogFacility AUTHPRIV PasswordAuthentication yes ChallengeResponseAuthentication no GSSAPIAuthentication no GSSAPICleanupCredentials no UsePAM yes AcceptEnv […]

如何在缓慢/片状的连接上进行ssh?

我正在处理一个非常慢的shell连接。 这是在云端,我离服务器很远。 我的连接有时也会中断,因为它通过互联网,我也可能使用共享的Wifi或3G。 有没有办法看到我立即打字? 尝试键入命令并等待每个字符是非常残酷的。

如何正确删除旧的SSH密钥

我有一个脚本dynamic创buildAmazon EC2实例,并将其ssh密钥添加到我的〜/ .ssh / known_hosts。 但是,每当我需要通过终止并重新创build实例来刷新实例时,我会收到令人厌恶的警告消息,如: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key sent by […]

阻止SSH客户端提供所有可以find的公钥?

像大多数系统pipe理员一样,我一直使用openssh。 我有大约十几个SSH密钥,我喜欢为每个主机有一个不同的SSH密钥。 但是,当我第一次连接到主机时,这会导致一个问题,我拥有的只是一个密码。 我想在这种情况下使用密码连接到主机,没有SSH密钥。 然而,SSH客户端将在我的~/.ssh/提供所有的~/.ssh/ (我通过查看ssh -v的输出来了解这一点)。 由于我有这么多,我会因为太多的validation失败而断开连接。 有没有办法告诉我的SSH客户端不提供所有的SSH密钥?

我怎样才能chroot SSH连接?

我想为大多数(不是全部)用户通过SSHlogin而设置一个chroot jail。 我听说有可能与最新版本的openssh,但我还没有能够find如何做到这一点。 如何所有人都在讨论修补旧版本,并且修补程序不再可用。 我正在运行debian etch。

对于git服务器,SSH和HTTP有什么优点和缺点?

我想设置一个git服务器。 我已经find了几个如何的,详细的。 有些描述可以通过Ssh访问的git-server的安装,有些则通过HTTP访问。 (其他人甚至build议工具,如gitolite)。 有没有利弊select通过SSH或HTTP? 看来,通过HTTP,文件传输速度明显较慢,但我不知道是否有其他的事情要记住。 如果有的话,build立一个git服务器最常见的方式是什么?