Linux sshd服务
软件包名和相关配置文件
服务的软件包名 openssh-server
配置文件 /etc/ssh/sshd_config
# 优化SSH连接速度,如果配置文件有dns解析的话就改下面两行,配置默认启用dns查询
UseDNS=no # 不启用dns解析
GSSAPIAuthentication no # 解析dns导致连接服务器有延时,将此值改为no就可以去掉延时
指纹保存文件 ~/.ssh/known_hosts # 指纹信息对不上的时候删除known_hosts文件中与该ip相对应的行
私钥文件 ~/.ssh/id_rsa
公钥文件 ~/.ssh/id_rsa.pub
保存其它主机的公钥文件 ~/.ssh/authorized_keys
启用服务相关命令
systemctl restart sshd # 重启服务
systemctl enable sshd # 设定开机启动
systemctl disable sshd # 设定开机不启动
systemctl reload sshd # 重新加载配置文件
远程登录与拷贝
第一次连接陌生主机会建立认证文件,选择yes后输入主机用户密码可以完成连接
ssh -p 2000 user@host # 指定端口登录
scp path_file root@ip:dir # 上传
scp root@ip:path_file /dir # 下载
配置免密登录
1. 制作密钥
ssh-keygen # 生成密钥,可以一路回车全默认
# 不交互直接制作
ssh-keygen -P '' -f ~/.ssh/id_rsa
生成密钥的命令-——指定保存加密字符的文件(默认直接enter)——-设定密码——-确认密码-——私钥(钥匙)——-公钥(锁)
参数
-b # 采用长度1024bit的密钥对,b=bits,最长4096,不过没啥必要
-t rsa # 采用rsa加密方式(默认就是这个) , t=type
-f # 生成文件名 , f=output_keyfiles
-C # 设置注释文字,C=comment
-N: # 提供一个新密语
-P: # 提供(旧)密语
示例 : ssh-keygen -t rsa -b 1024 -f yourkeyname -C "备注"
2. 发送公钥给远程主机
ssh-copy-id 用户@远程主机 # 发送公钥至远程主机,不指定用户默认root
异常处理:如果A将公钥拷贝到B,但是A登陆B仍然需要输入密码,此时应当修改B主机的配置文件。
(1)打开sshd_config配置文件
# vim /etc/ssh/sshd_config
# 禁用root账户登录,如果是用root用户登录请开启
PermitRootLogin yes
# 是否让 sshd 去检查用户家目录或相关档案的权限数据,这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。例如使用者的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登入。
StrictModes no
# 是否允许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2,至于自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys 内
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# 有了证书登录了,就禁用密码登录。
PasswordAuthentication no
(2)重启sshd服务
service sshd restart
(3)如果在拷贝公钥过程中出现“Agent admitted failure to sign using the key”异常,执行如下命令
ssh-add ~/.ssh/id_rsa
访问控制
/etc/hosts.allow
/etc/hosts.deny
通过以上文件设置黑白名单,allow白名单,deny黑名单
vi /etc/hosts.deny
sshd:ALL # ALL表示所有. 还可以写网段,如:192.168.1.0/24