Linux怎么远程执行指令呢-SSH秘钥

    在Linux运维中,自动化运维提高运维工程师的工作效率,减少人为失误。Ansible 是近年来越来越火的一款开源运维自动化工具,无客户端模式,底层通过 SSH 通信。笔者就想把它啃下来,无奈知识薄弱,只能从小处着手,积少成多慢慢来!

    Linux怎么远程执行指令呢?ssh [email protected] "ls"  或者ssh 192.168.31.103 "ls" ,远程执行命令,需要输入密码,这个在远程是有交互提醒输入密码,会增加麻烦,也不够自动化。是否可以不用输入密码,直接远程执行命令呢?SSH秘钥!

    dpkg -l | grep ssh可以查看是否安装了客户端 openssh-client 和服务器 openssh-server。如果没有可以搜索apt-cache search openssh-client、apt-cache search openssh-server是否有源,然后安装sudo apt-get install openssh-client 、sudo apt-get install openssh-server。

1、192.168.31.76本机生成密钥对。

    使用ssh-keygen命令生成密钥对,私钥文件 id_rsa 和公钥文件 id_rsa.pub。

    ssh-keygen -t rsa     #-t表示类型选项,这里采用rsa加密算法。根据提示一步步的按enter键即可,需要设置密钥对文件夹,设置私钥口令passphrase(可不设)。执行结束以后会在 /home/当前用户 目录下生成一个 .ssh 文件夹,其中包含私钥文件 id_rsa 和公钥文件 id_rsa.pub。

2、将公钥复制到远程主机192.168.31.82中

    使用ssh-copy-id命令将公钥复制到远程主机。ssh-copy-id会将公钥写到远程主机的 ~/ .ssh/authorized_keys 文件中。

    ssh-copy-id [email protected]。这一条命令是需要输入密码的。

    可以使用for循环来发送给被管理机器群。

    for i in{1,2,3,6};do ssh-copy-id -i 192.168.1.3$i ;done

3、完成密钥对部署,测试

        ssh 192.168.31.82 "ls" 。远程看用户目录下的文件;

        ssh 192.168.31.82 "./ipaddress.sh"。远程执行脚本ipaddress.sh查看IP地址。

linux远程执行命令

        远程执行程序时,关闭终端会中断ssh连接,远程主机上程序会自动停止。 nohup + 需要运行的程序使运行的程序在切断ssh连接的时候仍然能够继续在远程主机中运行。nohup是no hang up(不挂起)。上面的命令改写成ssh 192.168.31.82 "nohup ./ipaddress.sh",ipaddress.sh脚本执行时间很短,意义不大。如果有其他一直运行的服务,比如脚本里面有循环的话,意义就很大了。在脚本后面加个&直接在后台运行。

    一条命令直接远程执行,那么在脚本里面就可以很方便的控制远程主机的进程等等,利用PHP的shell_exec函数又可完成网络监控功能。

你可能感兴趣的:(Linux怎么远程执行指令呢-SSH秘钥)