【笔记】SSH学习笔记

前言

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
1
Port 22

去除监听地址注释

/etc/ssh/sshd_config
1
2
ListenAddress 0.0.0.0
ListenAddress ::

允许远程登录

/etc/ssh/sshd_config
1
PermitRootLogin yes

允许通过密码的方式认证

/etc/ssh/sshd_config
1
PasswordAuthentication yes

允许通过密钥的方式认证

/etc/ssh/sshd_config
1
PubkeyAuthentication yes

通过非对称密钥的方式认证

客户端生成密钥对

rsaed25519:加密类型
-C <str>:添加注释

1
ssh-keygen -t rsa

客户端公钥发送到服务端

  • 当前主机发送公钥到对方主机,当前主机的公钥将会存储在对方主机的~/.ssh/authorized_keys文件内
    • ~/.ssh/authorized_keys文件每行存储一个主机的公钥,这个公钥的持有者可以通过密钥验证的方式登录到这台主机
  • 当前主机发送公钥到对方主机,当前主机可以通过密钥验证的方式登录到对方主机

通过命令发送公钥

<ip>:发送到对方主机的IP地址

1
ssh-copy-id <ip>

手动发送公钥

从客户端获取公钥
1
cat ~/.ssh/id_rsa.pub
在服务端保存客户端的公钥

<key>:从客户端获取的公钥

1
echo "<key>" >> ~/.ssh/authorized_keys

远程登录

-X:允许x11转发,将远程连接的主机的包含界面的程序显示在本机
-x:禁止x11转发
-i ~/.ssh/id_rsa:通过密钥的方式认证并指定密钥文件

使用当前的用户作为远程登录的用户

1
ssh <ip_or_hostname>

指定远程登录的用户

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
瞎折腾分享的博客
博客园——杨哥哥