SSH
一、简介
SSH 是为远程登陆会话和其他网络服务提供安全性的协议
默认端口号为:22
客户端配置文件:/etc/ssh/ssh_config
服务端配置文件:/etc/ssh/sshd_config
二、ssh_config
ssh_config
配置文件常用参数
Host * # 有效的主机(多个主机可用空格隔, “*” 表示所有)
ForwardAgent no # 连接是否经过代理验证(如果是)转发给远程计算机
ForwardX11 no # 连接受否被自动重定向到安全的通道和显示集
RhostsRSAAuthentication no # 不使用 RSA 算法基于 rhosts 的安全验证(仅 Version 1 版本使用)
RSAAuthentication yes # 使用 RSA 算法进行安全验证
PasswordAuthentication yes # 使用口令验证
HostbasedAuthentication no # 与 RhostsRSAAuthentication 类似(Version2 使用)。
GSSAPIAuthentication no # 是否允许使用基于 GSSAPI 的用户认证(默认值为 ”yes”,仅用于 Version2)
BatchMode no # 如为 “yes“,passphrase/password(交互式输入口令)的提示将被禁止
CheckHostIP yes # 设置 SSH 是否检查看连接到服务器的主机的 IP 地址以防止 DNS 欺骗(建议设置为 “yes“)
AddressFamily any # 指定使用哪种地址协议(默认:any、仅IPv4:IPv4、仅IPv6:IPv6)
ConnectTimeout 0 # 设置连接超时时间
StrictHostKeyChecking ask # 如果设置为 ”yes“,则不会自动把计算机的密钥加入 ”HOME/.ssh/known_hosts" 文件,并且以一旦计算机的密钥发生了变化,就拒绝连接
IdentityFile ~/.ssh/identity # 设置从哪个文件读取用户的 RSA 安全验证标识
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_dsa
IdentityFile ~/.ssh/id_ecdsa
IdentityFile ~/.ssh/id_ed25519
Port 22 # 设置端口号
Protocol 2 # 指定 SSH 的协议版本,1 或 2(如需同时支持两者,只需使用逗号分隔,如:1,2)
Cipher 3des # 设置加密用的密码
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc # 指定 Version2 使用的加密算法(多个算法之间使用逗号分隔)
MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160 # 制定允许在 Version2 中使用哪些消息摘要算法来进行数据校验
三、sshd_config
sshd_config
配置文件常用参数
# 常用
Port 22 # 端口号
AddressFamily any # 指定使用哪种地址协议(默认:any、仅IPv4:IPv4、仅IPv6:IPv6)
ListenAddress 0.0.0.0 # 监听地址(0.0.0.0 表示所有地址)
ListenAddress :: # 监听地址(IPv6 地址)
Protocol 2 # 指定 SSH 的协议版本,1 或 2(如需同时支持两者,只需使用逗号分隔,如:1,2)
LogLevel INFO # 日志等级(QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3)
UserDNS no # 禁止DNS反向解析
# 用户相关
PermitRootLogin no # 禁止root用户登录
PermitEmptyPasswords no # 禁止空密码用户登录
LoginGraceTime 2m # 登录验证时间为2分钟
MaxAuthTries 6 # 最大重试次数6次
AllowUsers steven # 只允许 steven 用户登录
DenyUsers steven # 不允许登录用户 steven
# 验证
PasswordAuthentication yes # 启用密码验证(如配置密钥登录,则需关闭此项)
PubkeyAuthentication yes # 启用密匙验证
RSAAuthentication yes # 使用 RSA 算法进行安全验证
AuthorizedKeysFile .ssh/authorized_keys # 指定公钥数据库文件(用于密钥登陆)
四、常用命令
ssh
ssh 是 openssh 套件中的客户端连接工具
# ssh 常用参数
-1 # 强制使用 ssh 协议版本1
-2 # 强制使用 ssh 协议版本2
-4 # 强制使用 IPV4 地址
-6 # 强制使用 IPV6 地址
-A # 开启认证代理连接转发功能
-a # 关闭认证代理连接转发功能
-b # 使用本机指定地址作为对应连接的源 IP 地址
-C # 请求压缩所有数据
-F # 指定 ssh 指令的配置文件
-f # 后台执行 ssh 指令
-g # 允许远程主机连接主机
-i # 指定身份文件
-l # 指定连接远程服务器登陆用户名
-N # 不执行远程指令
-o # 指定配置选项
-p # 指定远程服务器的端口
-q # 静默模式
-X # 开启 X11 转发功能
-x # 关闭 X11 转发功能
-y # 开启信任 X11 转发功能
ssh-keygen
ssh-keygen 命令用于为 ssh 生成、管理和转换认证密钥
# ssh-keygene 常用参数
-C # 添加注释
-b # 指定密钥长度
-e # 读取openssh 的私钥或公钥文件
-f # 指定用来保存密钥的文件名
-i # 读取未加密的 ssh-v2 兼容的私钥/公钥文件,然后在标准输出设备上显示 openssh 见阿荣的私钥/公钥
-l # 显示公钥文件的指纹数据
-N # 提供一个新密码
-P # 提供一个旧密码
-q # 静默模式
-t # 指定要创建的密钥类型(RSA、DSA,默认为 RSA)
ssh-cocpy-id
ssh-copy-id 命令用于把本地主机的公钥复制到远程主机的 /root/.ssh/authorized_keys 文件中
ssh-cocpy-id 常用参数
-i # 指定公钥文件
scp
加密的方式在本地的主机和远程主机之间复制文件
# scp 常用参数
-1 # 强制使用 ssh 协议版本1
-2 # 强制使用 ssh 协议版本2
-4 # 强制使用 IPV4 地址
-6 # 强制使用 IPV6 地址
-B # 以批处理模式运行
-C # 使用压缩
-F # 指定 ssh 配置文件
-i # identity_file 从指定文件中读取传输时使用的密钥文件
-l # 指定宽带限制
-o # 指定使用的 ssh 选项
-P # 指定远程主机的端口号
-p # 保留文件的最后修改时间,最后访问时间和权限模式
-q # 不显示复制进度
-r # 以递归方式复制
五、配置密钥登陆
1、修改配置文件
# 修改服务端配置文件 /etc/ssh/sshd_config
PasswordAuthentication no # 关闭密码验证
PubkeyAuthentication yes # 启用密钥验证
RSAAuthentication yes # 使用 RSA 算法进行安全验证
2、在客户端生成密钥
ssh-keygen
指定私钥保存的路径及文件名(如不指定则默认为 /root/.ssh/id_rsa)
密钥密码,最少五个字符(用于密钥连接时候使用,如不输入则可免密登陆)
确认密码
确完后自动在密钥文件所在位置创建 .pub 的公钥文件
# 文件简介
id_rsa # 私钥文件
id_rsa.pub # 公钥文件
authorized_keys # 服务端公钥文件
known_hosts # 确认过公钥指纹的可信服务器列表的文件
config # 指定不同域名使用哪个密钥的配置文件
3、上传公钥到服务端
ssh-copy-id -i id_rsa.pub root@192.168.1.123 # 将公钥上传到服务器(会自动在服务器 /root/.ssh/ 目录下创建 authorized_keys 文件)
# 如前一行报错则可用 scp 命令拷贝
# 将 .11 主机上的 id_rsa.pub 拷贝到指定目录并更名为 authorized_keys(服务端输入)
scp -P 2222 root@10.1.82.11:/root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
# 或
# 将本地主机上的 id_rsa.pub 文件拷贝到 .11 主机上并更名为 authorized_keys(客户端输入)
scp -P 2222 /root/.ssh/id_rsa.pub root@10.1.82.11:/root/.ssh/authorized_keys
4、连接
如设置了公钥密码则需输入公钥密码,如没设置公钥密码则可免密登陆
ssh -p 2222 root@192.168.1.123