SSH 是 Secure Shell 的缩写,它使用加密通道来传输网络数据。
1. 使用 SSH 在远程主机上运行命令
1. 连接远程主机
ssh username@remote_host
- username
- 远程主机上的用户
- remote_host
- 远程主机上的域名或者是 ip 地址
ssh 采用交互方式询问用户密码,一旦认证成功,将会为用户返回一个 shell。
2. 连接运行在端口 422 上的 SSH 服务器
ssh username@remote_host -p 422
3. 在远程执行命令,在本地显示
ssh username@remote_host 'COMMANDS'
ssh username@remote_host 'command1; command2; command3'
COMMANDS="command1; command2; command3"
ssh username@remote_host "${COMMANDS}"
4. ssh 压缩传输
ssh -C username@remote_host COMMANDS
5. 本地数据重定向到远程 stdin
echo 'test' | ssh username@remote_host 'echo'
# 将文件中的数据重定向到远程 stdin
ssh username@remote_host 'echo' < file
6. 在远程主机中执行图形化命令
ssh username@remote_host "export DISPLAY=:0; command1; command2"
# 远程主机执行, 图形化输出显示在本地主机上
ssh -X username@remote_host "command1; command2"
2. ssh 实现无密码自动登录
ssh 包含了一个内建的特性,可以用 ssh 密钥实现自动登录
- ssh 采用了非对称加密技术
- 认证密钥包含 公钥 和 密钥
- 公钥放置在远程服务器中(~/.ssh/authorized_keys)
- 密钥放置在客户机中(~/.ssh/)
- ssh 相关的配置信息存放在 /etc/ssh/sshd_config 文件中
1. 创建 ssh 密钥
# 创建 ssh 密钥, 并指定加密算法为 RSA
ssh-keygen -t rsa
你需要在这一步执行的过程中,输入一个口令来生成一对公钥和密钥。如果不输入的话,也可以生成密钥,但是不安全。
运行完上述指令后,会在本地客户机的 ~/.ssh/ 文件夹中生成 id_rsa.pub 和 id_rsa 两个文件。
id_rsa 是密钥
id_rsa.pub 是公钥。公钥必须添加到远程服务器的 ~/.ssh/authorized_keys 文件中。
2. 向远程服务器添加公钥
ssh username@remote_host "cat >> ~/.ssh/authorized_keys" < ~/.ssh/id_rsa.pub
上述指令会需要提供密码
然后,自动登录配置完毕。以后运行 ssh 不会在提示输入密码。
ssh-copy-id 工具可以自动将私钥加入到远程服务器的 authorized_keys 文件中。
ssh-copy-id username@remote_host