关于linux命令ssh的总结,linux命令ssh


因为项目计算量比较大,需要将任务分布到多台电脑上面运行,因为对于分布式概念不熟,就想到了linux最简单的ssh协议,远程控制其他电脑,然后写shell脚本统一在所有电脑上运行程序.(我的操作系统为Ubuntu16.04)

首先在各自电脑上面输入以下命令查看是否安装了ssh

ps -e | grep ssh

 

如果返回结果由上图中的sshd,则说明已经安装好ssh,否则线安装.

sudo apt-get install ssh 安装即可.

接下来我们使用ssh登录其他电脑的时候,ssh username@ip登录,会提示需要输入密码.这时候输入密码即可远程控制另一台电脑.

 

(ifconfig查看ip)

 

如果有十台电脑需要你连接,分配任务,这样做就要每次都记住相应的电脑ip和密码,不利于我们用脚本统一运行,因此第一步就是需要将需要远程控制的电脑免密登录.

首先我们在你自己的电脑上面生成密钥.

ssh-keygen,然后一路enter,此时会在主目录下生成.ssh的文件夹

ls -a (查看是否生成.ssh文件夹)

进入.ssh文件夹,查看文件

 

此时说明秘钥对已经生成好了.接下来将公钥通过scp拷贝到你需要连接的电脑上.

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

scp ~/.ssh/id_rsa.pub username@ip:~/.ssh/id_rsa.pub_copy

接下来远程连接上你需要连接作为服务器的电脑

touch ~/.ssh/authorized_keys

cat ~/.ssh/id_rsa.pub_copy >> ~/.ssh/authorized_keys 

这时候就到了最后一步,修改权限

chmod 755 ~

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys 

这里很多人不太明白755,700,600这些数据的含义,这个是linux权限的数字表达方式.

给大家说明一下,比如我们在查看某个文件的权限时

 

我们会看到上面的结果,前面这一部分是由十位组成,1-3-3-3的方式,第一个字母表示文件类型,d表示的就是文件夹document的第一个字母,接下来第一个三位表示所有者的权限,第二个三位是所在组的权限,第三个三位是其他组的权限.R--,W-,X-执行,所以rwx表示当前组可读可写可执行.回到上面数字,R同时对应数字4,W对应2,X对应1.现在可以明白755表示所有者是可读可写可执行,所在组是可写可执行,其他组也是可写可执行.

好啦,现在可以测试一下是否可以免密码登录他人电脑了.

 

在运行过程中,你可能会遇到这个问题,这是表明ssh-agent在运行,但是没有找到相应的key,我们通过ssh-add,即可解决,同时也可以通过ssh-add -l来查看附加的key.

 

在远程连接中还是需要输入用户名和ip,如果你不想输入用户名,就在最初为所有的电脑创建一个相同的用户即可.

脚本运行所有程序

Screen -dm ssh -t username1@ip1 “...”  (在引号里面输入你想运行的命令即可)

Screen -dm ssh -t username2@ip2 “...”  

 

ps:写得不好的地方希望大家多多指教.

相关内容