Articles of ssh

在多个主机上并行执行不同的命令

我正在寻找一个工具来运行一系列命令,如现有的工具: parallel -h parallel [OPTIONS] command — arguments for each argument, run command with argument, in parallel parallel [OPTIONS] — commands run specified commands in parallel 但是我希望这些命令可以在多台计算机上通过ssh运行,并且可以使用pssh或pdsh的许多优点与许多主机进行通信。 我已经破解了一些有用的东西 ,但是与这些工具相比,ssh处理没有任何意义 – 我无法阻止它们,甚至看不到它们的所有输出。 更好的是,如果该工具有一些基本的负载平衡,但我想我会使用一个单独的工具来select主机。 (一个查询负载,内存的好工具,如果一台计算机在交互式使用也将不胜感激,但我已经写了一些东西,足以让主机select。)这不是在一个集群,我不'除了sshd以外,还要依赖守护进程,或者要求pipe理员安装像Condor这样严肃的集群作业调度程序。 我没有任何这些计算机的根访问权限。 编辑:为了强调,我想在每个主机上运行不同的命令 – 通常使用不同的参数运行相同的程序,就像上面的第一个parallel使用示例一样。

即使交换没有完全使用,当内存不足时,我也不能ssh进入远程服务器

我有一个godaddy服务器已经变得没有反应周期性。 这是很难排除故障,因为当它变得没有响应时,我不能ssh进入它。 我想通过添加一个cron作业来pipe理输出从“top”到每5分钟的日志文件。 下一次,我没有响应后,我打开电源循环,我检查了这些日志,发现内存已经超出了,但交换大部分是未使用的。 我正在努力减less这台机器上两台应用程序服务器的内存使用率(结果是有太多的连接被打开了,每台服务器用完了30米,所以打开服务器后,服务器耗尽了内存) d真的很想知道如何确保我可以ssh进入机器。 如果交换文件没有满,那么我会认为服务器有足够的空间来响应,即使这样做太慢了。 有什么办法可以保留一些内存,这样我总是可以进入机器? 以下是服务器正常运行时的样子: top – 15:13:21 up 3:12, 2 users, load average: 0.15, 0.30, 0.33 Tasks: 127 total, 1 running, 126 sleeping, 0 stopped, 0 zombie Cpu(s): 2.4%us, 1.8%sy, 0.0%ni, 95.7%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st Mem: 2064980k total, 1611252k used, 453728k free, 45852k buffers Swap: 2096472k total, 0k used, […]

通过中介服务器进行远程桌面的SSH隧道第二部分

我以前问过如何使用中间服务器来configuration2个SSH隧道,以便通过它们运行远程桌面,并设法使其工作。 现在,我正在尝试使用相同的机器,但以相反的顺序。 这是设置: Windows 7个人电脑在专用networking中,坐在防火墙后面。 公共访问Linux服务器,可以访问PC。 Windows 7笔记本电脑,在家里,我想在PC上做远程桌面。 我在笔记本电脑上使用Putty来创build一个从它到Linux服务器的反向隧道: R60666 localhost:3389 。 我在PC上使用Putty来创build一个从它到Linux服务器的常规隧道: L60666 localhost:60666 。 我SSH到Linux服务器,我运行telnet localhost 60666,它似乎产生预期的输出,如我在这里收到的debugging提示中所述。 我尝试将远程桌面从PC连接到笔记本电脑: localhost:60666 。 它要求我的用户名和密码,我点击确定,它locking我的笔记本电脑上的当前会话(所以我看到在笔记本电脑上的欢迎屏幕,而不是我的桌面),它显示远程桌面屏幕上的“欢迎”消息,然后它只是黑色。 它不会断开连接,它不会提供任何错误,而且我无法在“远程桌面”屏幕中执行任何操作。 我尝试了与Windows XP笔记本电脑相同的设置,并且遇到相同的症状。 我也尝试使用不同于60666的端口,但没有任何改变。 有人知道我在做什么错吗? 更新 :正如@jwinders所指出的,我无法直接从Linux服务器运行telnet PC 3389 。 由于Windows防火墙有一个规则允许在端口3389上的所有连接,我不知道是什么阻止它。 幸运的是,我能够从Linux机器创build一个SSH隧道到PC ssh 3389:localhost:3389 'domain\user'@PC 。

非交互式ssh会话不终止,sshd进程在脚本退出后永远等待

我们使用ssh [email protected] sudo /root/run-chef-client.sh命令远程运行一个简单的部署脚本。 它今天开始挂起,因为即使sudo已经完成, sshd在10.170.4.11上永远等待。 我们在debugging模式下启动了sshd ,并获得了两种不同types的日志。 以下是会话不挂起时的正常日志: debug1: Received SIGCHLD. debug1: session_by_pid: pid 23187 debug1: session_exit_message: session 0 channel 0 pid 23187 debug1: session_exit_message: release channel 0 Received disconnect from 10.170.4.6: 11: disconnected by user 当它挂起时,我们得到以下内容: debug1: Received SIGCHLD. debug1: session_by_pid: pid 24209 debug1: session_exit_message: session 0 channel 0 pid 24209 debug1: session_exit_message: […]

通过SSH隧道连接到MYSQL

我可以ssh到远程服务器和login没有问题。 我试图通过SSH隧道连接到远程MySQL数据库,并遇到问题。 我成功创build了隧道(通过telnetvalidation)。 当我尝试使用以下命令login时: mysql –host=127.0.0.1 -P 3302 -u fakeuser -p 我明白了 Access denied for user 'fakeuser'@'192.168.100.93' 问题是@ 192.168.100.93。 我相信我需要这个fakeuser @ localhost。 由于我通过SSH隧道连接,为什么不被设置为本地主机? 我如何强制它到本地主机? 它从哪里得到192.168.100.93? 请注意,我无法更改MySQL服务器上的任何设置。 谢谢您的帮助!

如何停止SSH密码提示?

我有一台我刚刚打开的服务器。 当我ssh作为nt_deployer ,它问我一个SSH密码: Nets-Mac-Pro:mysite emai$ ssh [email protected] Enter passphrase for key '/Users/emai/.ssh/id_rsa': [email protected]'s password: Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.13.0-29-generic x86_64) 但是,当我把ssh当成emai ,它并没有问: Nets-Mac-Pro:mysite emai$ ssh [email protected] [email protected]'s password: Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.13.0-29-generic x86_64) 有人能告诉我如何停止popupnt_deployer的密码提示吗?

ssh许多用户到一个家

我想允许一些信任的用户scp文件到我的服务器(到一个特定的用户),但我不想给这些用户一个家,既不sshlogin。 我有问题要了解我必须创build的用户/组的正确设置才能实现。 我会举一个例子。 有: MyUser@MyServer MyUser属于组MyGroup MyUser的家可以说, /home/MyUser SFTPGuy1@OtherBox1 SFTPGuy2@OtherBox2 他们给我他们的id_dsa.pub ,我把它添加到我的authorized_keys 我认为,我会在我的服务器上做类似的事情 useradd -d /home/MyUser -s /bin/false SFTPGuy1 (和另一个相同) 最后, useradd -G MyGroup SFTPGuy1 (再次,对于其他人) 我希望那时,SFTPGuys能够sftp -o IdentityFile=id_dsa MyServer并被带到MyUser的家… 那么,情况并非如此… SFTP只是不断要求我input密码。 有人能指出我错过了什么吗? 非常感谢, F。 [ 编辑 :在StackOverflow的Messa问我,如果authorized_keys文件是可读的其他用户(MyGroup的成员)。 有趣的是,这是我的答案: 那么,它不是(它是700),但后来我将.ssh目录和auth文件的权限更改为750,但仍然没有效果。 猜猜值得一提的是我的家庭目录( /home/MyUser )对于这个组也是可读的。 大多数dir是750,他们放置文件的特定文件夹是770。 然而,关于auth文件,我认为authentication将由MyServer上的本地用户执行,不是吗? 如果是这样,我不明白需要其他用户阅读…好吧..只是想知道。 ]

fail2ban和denyhosts不断禁止我在Ubuntu上

我刚刚在Linode上获得了一个Ubuntu实例。 为了保护SSH,我安装了fail2ban (使用apt-get ),但是后来出现了一个问题:即使我input了正确的密码, fail2ban一直禁止我的IP(在有限的时间内,谢天谢地)。 所以我删除了fail2ban ,而是安装了denyhosts 。 同样的问题,但更严重的:这似乎每次我SSH进来,我的IP被禁止。 我从/etc/hosts.deny删除它,重新启动denyhosts ,再次login,我的IP被禁止了。 我能想到的唯一解释就是我已经以root身份进行了SSH连接(是的,是的,我知道); 也许某些地方设置了阻止以root身份进行SSHlogin的任何人,即使他们login成功了。 这对我来说似乎很怪异。 有任何想法吗? (将我的IP列入白名单是暂时的,我不想只能从一个IPlogin)。

如何通过ssh远程端口转发允许从非本地主机客户端进行远程连接?

我有一个系统说“privatesys”。 我试图通过远程代理使用ssh远程端口转发访问其Web服务器,如下所示。 私有系统名称:privatesys 暴露的港口:80 远程系统名称:remotesys 远程端口:9090 在privatesys上,我运行了下面的命令。 ssh -N -R remotesys:9090:localhost:80 -l username remotesys 它在privatesys和remotesys之间build立了一个隧道,只要我从remotesys连接到9090端口,端口转发就可以正常工作。 我喜欢做的是从与remotesys在同一子网上的系统访问http://remotesys:9090/ 。 当我这样做,我从浏览器得到无效的url错误。 看起来像remotesys上的sshd绑定到本地主机,而不是系统上的所有接口。 有什么诀窍让sshd接受任何系统在其子网上的连接?

在here-document中通过SSH运行命令时不存在TTY

我试图通过SSH在这里的文档中运行一个命令: ssh example.com <<END sudo /etc/init.d/apache2 reload END 除了当我试图运行一些需要input的东西,比如sudo的密码,这通常是正常的。 在这种情况下,我收到以下消息: sudo: no tty present and no askpass program specified 我知道我可以在SSH上使用-t标志来分配一个伪tty,例如: ssh -t example.com "sudo /etc/init.d/apache2 reload" 它会工作,但是当我用这里的文档尝试同样的事情,它不起作用,我会得到同样的错误关于没有tty存在: ssh -t example.com <<END sudo /etc/init.d/apache2 reload END 任何想法如何我可以使这项工作? 此外,如果您想知道为什么我希望它与这里的文档工作,而不是只是在同一行上传递它,这是因为input命令(可以有一些)来自脚本读取的configuration文件我听说它避免了转义引号,双引号等命令的麻烦。