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
posted @ 2022-12-28 12:13  待满茶杯  阅读(66)  评论(0编辑  收藏  举报