SSH 技巧

简介: SSH 是 Linux 下进行远程连接的基本工具。一般情况下我们可以通过 ssh username@xxx.xxx.xxx.xxx 登录远程服务器,如果要管理多台服务器,这样太长了。

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"

img_34abf7dd50060424f2c304ab02bd43a9.png
image.png

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

ssh cloud "df -h; ps;"

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

$ ssh -t cloud top

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

img_649121469a919abf0dd03b36173fe2fb.png
image.png

再举个实际例子:
ssh -t flux sudo -u fueladminprd ssh 192.168.1.100
这句话实际执行了两步:

  1. ssh -t flux #登录名为flux的服务器,因为需要交互式,加上-t
  2. sudo -u fueladminprd ssh 192.168.1.100 # 以 fueladminprd 用户在 flux 上执行 ssh 192.168.1.100
    为了安全,flux 就是跳板机,192.168.1.100 为实际测试服务器。

4. 执行多行命令

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

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

img_dfac905733bd8ddad62369993302f898.png
image.png

5. 在命令中使用变量

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

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

6. 执行本地脚本

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

img_f742c746046c3825e501954662839cd7.png
image.png

7. 为脚本传入参数

修改 demo.sh 内容为:

ls node
echo $0
echo $1
echo $2

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

img_42fd920002d226c1c0e8482d3d42cdc3.png
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

相关文章
|
Web App开发 Linux 网络安全
ssh技巧
1. 打通ssh key的简单方法: ssh-copyid 192.168.1.1 2.使用ssh 将Linux主机变成http代理服务器 ssh -NfD 192.168.22.1:10080 127.0.0.1 192.168.22.1:10080 表示监听本机192.168.22.1这个ip的10080端口。
1062 0
|
1月前
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。
|
6月前
|
安全 Linux Shell
Linux中SSH命令介绍
Linux中SSH命令介绍
169 2
|
4月前
|
监控 安全 Ubuntu
在Linux中,如何进行SSH服务配置?
在Linux中,如何进行SSH服务配置?
|
4月前
|
安全 Linux 网络安全
在Linux中,如何配置SSH以确保远程连接的安全?
在Linux中,如何配置SSH以确保远程连接的安全?
|
4月前
|
安全 Linux Shell
SSH 命令完整实用指南 | Linux SSH 服务
【8月更文挑战第20天】
549 0
|
4月前
|
安全 Linux Shell
如何在 Linux 服务器上配置基于 SSH 密钥的身份验证
如何在 Linux 服务器上配置基于 SSH 密钥的身份验证
307 0
|
4月前
|
Linux 网络安全 数据安全/隐私保护
Linux——配置SSH免密登录
Linux——配置SSH免密登录
115 0
|
5月前
|
安全 Ubuntu Linux
记录一次Linux服务器被人使用SSH字典爆破
曾经我以为互联网到至今应该是很和平的状态,但是经历了这次ssh字典爆破攻击后我才意识到网络攻击无处不在,建议系统密码使用比较复杂的随机字符组合,七八十位都没问题,数据可贵,电脑该装杀毒软件的就装上,别因为那占用那点内存而舍弃杀毒软件,防网络攻击于未然 !
|
6月前
|
Shell Linux 网络安全
Linux怎样在使用ssh 链接时就指定gcc 的版本
Linux怎样在使用ssh 链接时就指定gcc 的版本
65 7