SSH 技巧

作者: 飞凡的陀螺 | 来源:发表于2018-09-16 21:49 被阅读94次

    SSH 是 Linux 下进行远程连接的基本工具。
    一般情况下我们可以通过 ssh username@xxx.xxx.xxx.xxx 登录远程服务器,如果要管理多台服务器,这样太长了。
    可以在家目录的 .ssh 中新建config文件,设置别名。
    比如我的个人云主机,

    # Host 可跟多个表示别名
    Host cloud  alias
        HostName 120.163.xxx.323
        User ubuntu
        Port 4722
        # 私钥路径
        IdentityFile ~/.ssh/id_rsa
    

    这样执行 ssh cloudssh alias 就无密码登录云主机了

    1. 执行远程命令

    ssh cloud "df -h"

    image.png

    2. 用分号分隔多个命令,用引号引起来

    ssh cloud "df -h; ps;"

    3. 遇到需要交互的命令,加 -t 参数

    $ ssh -t cloud top
    

    比如 sudo 开头的可能需要用户输入密码,需要 TTY。
    添加 -t 参数后,ssh 会保持登录状态,直到你退出需要交互的命令。

    image.png

    4. 执行多行命令

    $ ssh cloud "echo 'haha'
    > pwd
    > ls "
    

    可以用单引号或双引号开头,然后写上几行命令,最后再用相同的引号来结束。
    > 开头的就是输入下一行命令
    如果需要在命令中使用引号,可以混合使用单双引号。

    image.png

    5. 在命令中使用变量

    在远程服务器执行 ls node,本地定义变量a,传入到命令中。达到一样的效果。
    在下图的命令中为 bash 指定了 -c 参数

    $ a=node
    $ ssh cloud bash -c " '
    > ls $a
    > ' "
    
    image.png

    6. 执行本地脚本

    本地创建demo.sh,内容是:ls node
    运行 ssh cloud < demo.sh
    通过重定向 stdin,本地的脚本 demo.sh 在远程服务器上被执行。

    image.png

    7. 为脚本传入参数

    修改 demo.sh 内容为:

    ls node
    echo $0
    echo $1
    echo $2
    

    执行 ssh cloud 'bash -s'< demo.sh aa bb cc
    bash 就是 $0 第一个参数。

    image.png

    参考:

    http://www.openssh.com/
    https://www.cnblogs.com/sparkdev/p/6842805.html
    https://www.zcfy.cc/article/top-20-openssh-server-best-security-practices

    相关文章

      网友评论

        本文标题:SSH 技巧

        本文链接:https://www.haomeiwen.com/subject/xrvfnftx.html