116194289373833612
前言
Secure Shell是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。虽然任何网络服务都可以通过SSH实现安全传输,SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。(维基百科)
安装openssh
Linux
CentOS
1
| yum install openssh-server
|
Debian
1
| apt install openssh-server
|
Alpine
1
| apk add --no-cache openssh
|
修改配置
去除端口号注释
/etc/ssh/sshd_config
去除监听地址注释
/etc/ssh/sshd_config1 2
| ListenAddress 0.0.0.0 ListenAddress ::
|
允许远程登录
/etc/ssh/sshd_config
允许通过密码的方式认证
/etc/ssh/sshd_config1
| PasswordAuthentication yes
|
允许通过密钥的方式认证
/etc/ssh/sshd_config1
| PubkeyAuthentication yes
|
通过非对称密钥的方式认证
客户端生成密钥对
rsa、ed25519:加密类型
-C <str>:添加注释
客户端公钥发送到服务端
- 当前主机发送公钥到对方主机,当前主机的公钥将会存储在对方主机的
~/.ssh/authorized_keys文件内
~/.ssh/authorized_keys文件每行存储一个主机的公钥,这个公钥的持有者可以通过密钥验证的方式登录到这台主机
- 当前主机发送公钥到对方主机,当前主机可以通过密钥验证的方式登录到对方主机
通过命令发送公钥
<ip>:发送到对方主机的IP地址
手动发送公钥
从客户端获取公钥
在服务端保存客户端的公钥
<key>:从客户端获取的公钥
1
| echo "<key>" >> ~/.ssh/authorized_keys
|
远程登录
-X:允许x11转发,将远程连接的主机的包含界面的程序显示在本机
-x:禁止x11转发
-i ~/.ssh/id_rsa:通过密钥的方式认证并指定密钥文件
使用当前的用户作为远程登录的用户
指定远程登录的用户
1
| ssh <username>@<ip_or_hostname>
|
远程执行命令
1
| ssh <username>@<ip_or_hostname> "<shell>"
|
1
| ssh <username>@<ip_or_hostname> bash -c "<shell>"
|
远程执行本地Shell脚本
1
| ssh <username>@<ip> < <file>.sh
|
完成
参考文献
CSDN——dh2580
博客园——殷大侠
CSDN——fandroid
CSDN——Tz.
stackoverflow——Adiii
哔哩哔哩——zhvsvd
CSDN——IT1995
瞎折腾分享的博客
博客园——杨哥哥