shell SSH远程无密码登录和操作

shell SSH远程无密码登录和操作

SSH远程一台设备

SSH 为建立在应用层基础上的安全协议,用户可以通过SSH协议远程访问同一个网段的其他设备,此时只需要将设备和路由器连接就行了,而不用将设备和PC连接在一起,而后用户就可以通过PC轻松访问该设备了。

SSH的指令模式如下:

主要参数说明:

-l 指定登入用户

-p 设置端口号

-f 后台运行,并推荐加上 -n 参数

-n 将标准输入重定向到 /dev/null,防止读取标准输入

-N 不执行远程命令,只做端口转发

-q 安静模式,忽略一切对话和错误提示

-T 禁用伪终端配置

SSH执行远程登录的命令格式:

Ssh [options][remote host][command]

假设远程设备的IP是109.105.116.100

则命令行可以为:

ssh root@109.105.116.100

SSH远程登录并执行指令格式:

Ssh [options][remote host][command]

注意:此时的command是需要双引号“”括起来的。

比如:ssh root@109.105.116.86 "ls"

如果有连续指令需要执行的话,则需要用分号“;”将不同的语句隔开,比如:

#ssh root@192.168.0.107 "cd /home/testbed/DUT; ls"

SSH远程多台设备

当有多台设备需要用SSH远程的时候,如果再一台台的手动链接会比较麻烦,此时就可以通过一个脚本来实现SSH远程无密码登录。

生成秘钥

SSH无密码登录首先需要生成一个公钥。

ssh-keygen -t rsa -P ''

其中-P为设置password, ''表示密码为空,这时候系统会自动生成秘钥。也可以这样

ssh-keygen -t rsa

此时需要四次回车来完成密码设置过程。

这样生成了一对密钥,存放在用户目录的~/.ssh下,名称为id_rsa.pub。

秘钥拷贝

当秘钥生成了之后,就需要通过SSH将秘钥拷贝到远程设备上。拷贝命令为ssh-copyid。

ssh-copy-id –I root@192.168.0.107

之后就可以通过shell脚本的for循环来远程操作每个设备,然后执行设备里的文件了。

ip_array=(1 2 3 4 5 6 7 8 9)

for IP in ${ip_array[@]}

do

echo "the ip is $IP"

ssh  ${IP_PATH}${IP} "cd /home/testbed/DUT/Project_Shell;

chmod 777 *;

./dut_start.sh;

sleep 1;

exit"

done

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容