/etc/ssh/sshd_config
。/etc/ssh/ssh_config
>~/.ssh/config
。gssapi-with-mic,hostbased,**publickey**,keyboard-interactive,**password**
centos:192.168.0.106 作为服务端
ubuntu:192.168.0.109 作为客户端
systemctl start sshd
ssh 192.168.0.106
~/.ssh/knowx_hosts
和/etc/ssh/konwn_hosts
下搜索是否有服务端的主机信息(host key,也就是客户端的公钥)tyson@tyson-virtual-machine:~/.ssh$ ssh [email protected]
The authenticity of host '192.168.0.106 (192.168.0.106)' can't be established.
ECDSA key fingerprint is SHA256:D8xUSX+B7tctYyZ7lMmUlTAJ1pHBv3gq+8vOp9PAZ7o.
Are you sure you want to continue connecting (yes/no)?
tyson@tyson-virtual-machine:~/.ssh$ cat known_hosts
|1|4kWt5ynYjSn1QxcgCK4mUNSIVOk=|cpZbgBkXUfXmPam8OKBOHTz4UPY= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLX6vHnGec09JPKpfZIk9ZpB7x7RwodIRnTDT6lNqq9VICZfdFUShcfguZTWQj5jeLB7EzicY30aKmcJYKC8fTM=
[root@Tyson'sComputer ~]# cat /etc/ssh/ssh_host_ecdsa_key.pub
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLX6vHnGec09JPKpfZIk9ZpB7x7RwodIRnTDT6lNqq9VICZfdFUShcfguZTWQj5jeLB7EzicY30aKmcJYKC8fTM=
ssh-keygen
转换成指纹用以提高比较速度。可以看到两端的指纹是一样的。[root@Tyson'sComputer ~]# ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub
256 SHA256:D8xUSX+B7tctYyZ7lMmUlTAJ1pHBv3gq+8vOp9PAZ7o no comment (ECDSA)
tyson@tyson-virtual-machine:~/.ssh$ ssh-keygen -l -f known_hosts
256 SHA256:D8xUSX+B7tctYyZ7lMmUlTAJ1pHBv3gq+8vOp9PAZ7o |1|eBRdn5lUDzacJE9P4r5XdOATRHk=|A6xRFYn1QeTWlqNPPJ+qdKqE7fY= (ECDSA)
[root@Tyson'sComputer ~]# ssh-keygen -lv -f /etc/ssh/ssh_host_ecdsa_key.pub
256 SHA256:D8xUSX+B7tctYyZ7lMmUlTAJ1pHBv3gq+8vOp9PAZ7o no comment (ECDSA)
+---[ECDSA 256]---+
| .o++*B .|
| .o..=.o.|
| . .. oo |
| + ..o. |
| S ..o.+o|
| o o+@=o|
| . BOo |
| .++.o |
| .=E* |
+----[SHA256]-----+
tyson@tyson-virtual-machine:~/.ssh$ ssh-keygen -lv -f known_hosts
256 SHA256:D8xUSX+B7tctYyZ7lMmUlTAJ1pHBv3gq+8vOp9PAZ7o |1|eBRdn5lUDzacJE9P4r5XdOATRHk=|A6xRFYn1QeTWlqNPPJ+qdKqE7fY= (ECDSA)
+---[ECDSA 256]---+
| .o++*B .|
| .o..=.o.|
| . .. oo |
| + ..o. |
| S ..o.+o|
| o o+@=o|
| . BOo |
| .++.o |
| .=E* |
+----[SHA256]-----+
gssapi-with-mic,hostbased,publickey,keyboard-interactive,password
./etc/ssh/ssh_config
去修改~/.ssh/authorized_keys
中。(记住,身份认证阶段是客户端分发自己的公钥给服务端,而主机认证阶段是服务端分发自己的公钥给客户端),演示如下:tyson@tyson-virtual-machine:~/.ssh$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tyson/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/tyson/.ssh/id_rsa.
Your public key has been saved in /home/tyson/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:gVour/10zcqnnX0OXcSdyS7jlh2WwdiHWkJX/GW6G2k tyson@tyson-virtual-machine
The key's randomart image is:
+---[RSA 2048]----+
| . .o.|
| . . .=oB|
| o . ..oXB|
| + . +o.=|
| o . S .o B.|
| o o. E.o|
| . . . o=.+.|
| o . o ooo...|
| . ... +oo .o.|
+----[SHA256]-----+
tyson@tyson-virtual-machine:~/.ssh$ cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCe6ZQQQWrTApXSaAsiCM0W3PtRDlqYVvSSKlKBMWhXN1cs2dLyaXyV2AKzegrIPMjX/HXV3EMCPD8ucIn+FWX30agGubI7E2OVAbg8ya533N1BuGvCL86OxcjybrCHGA1jpWVS/+edKQdX1N3OLhRensD+ZRU0wXC/Y1TTmF4LG28Cs2skn/5lvonu1F/KwkT+shXO98vy6O1mGaXi9RzarHH06XgsW2GNeW6rI92InCMdl3a6TSPLTzugtLNTk9wtrmPySLmkAQlRPHfegPgci1Y+JDBo2uaWlkzzQo0pZ6kMPAu/0q+9pnHoIwvz+EGPO11Ir+nRMlXcFnl38y1j tyson@tyson-virtual-machine
[root@Tyson'sComputer ~]# echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCe6ZQQQWrTApXSaAsiCM0W3PtRDlqYVvSSKlKBMWhXN1cs2dLyaXyV2AKzegrIPMjX/HXV3EMCPD8ucIn+FWX30agGubI7E2OVAbg8ya533N1BuGvCL86OxcjybrCHGA1jpWVS/+edKQdX1N3OLhRensD+ZRU0wXC/Y1TTmF4LG28Cs2skn/5lvonu1F/KwkT+shXO98vy6O1mGaXi9RzarHH06XgsW2GNeW6rI92InCMdl3a6TSPLTzugtLNTk9wtrmPySLmkAQlRPHfegPgci1Y+JDBo2uaWlkzzQo0pZ6kMPAu/0q+9pnHoIwvz+EGPO11Ir+nRMlXcFnl38y1j tyson@tyson-virtual-machine">> ~/.ssh/authorized_keys
systemctl restart sshd
tyson@tyson-virtual-machine:~/.ssh$ cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCe6ZQQQWrTApXSaAsiCM0W3PtRDlqYVvSSKlKBMWhXN1cs2dLyaXyV2AKzegrIPMjX/HXV3EMCPD8ucIn+FWX30agGubI7E2OVAbg8ya533N1BuGvCL86OxcjybrCHGA1jpWVS/+edKQdX1N3OLhRensD+ZRU0wXC/Y1TTmF4LG28Cs2skn/5lvonu1F/KwkT+shXO98vy6O1mGaXi9RzarHH06XgsW2GNeW6rI92InCMdl3a6TSPLTzugtLNTk9wtrmPySLmkAQlRPHfegPgci1Y+JDBo2uaWlkzzQo0pZ6kMPAu/0q+9pnHoIwvz+EGPO11Ir+nRMlXcFnl38y1j tyson@tyson-virtual-machine
tyson@tyson-virtual-machine:~/.ssh$ ssh [email protected]
Last login: Sun Feb 17 22:41:26 2019 from 192.168.0.109
you have been successfully process /etc/profile!
[root@Tyson'sComputer ~]# cat ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCe6ZQQQWrTApXSaAsiCM0W3PtRDlqYVvSSKlKBMWhXN1cs2dLyaXyV2AKzegrIPMjX/HXV3EMCPD8ucIn+FWX30agGubI7E2OVAbg8ya533N1BuGvCL86OxcjybrCHGA1jpWVS/+edKQdX1N3OLhRensD+ZRU0wXC/Y1TTmF4LG28Cs2skn/5lvonu1F/KwkT+shXO98vy6O1mGaXi9RzarHH06XgsW2GNeW6rI92InCMdl3a6TSPLTzugtLNTk9wtrmPySLmkAQlRPHfegPgci1Y+JDBo2uaWlkzzQo0pZ6kMPAu/0q+9pnHoIwvz+EGPO11Ir+nRMlXcFnl38y1j tyson@tyson-virtual-machine
[root@Tyson'sComputer ~]# exit
logout
Connection to 192.168.0.106 closed.
ssh 192.168.0.106
形式登录ssh 192.168.0.106 'echo "haha"'
形式登录~/.ssh/rc
和/etc/ssh/rc
中指定ssh连接建立后需要首先执行的命令。以下的配置都不是完整配置,完整的配置可参考http://www.jinbuguo.com/openssh/sshd_config.html。
/etc/ssh/sshd_config
:ssh服务端守护进程sshd的配置文件。systemctl restart sshd
#Port 22 # 服务端SSH端口,可以指定多条表示监听在多个端口上
#ListenAddress 0.0.0.0 # 监听的IP地址。0.0.0.0表示监听所有IP
Protocol 2 # 使用SSH 2版本
#####################################
# 私钥保存位置 #
#####################################
# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key # SSH 1保存位置/etc/ssh/ssh_host_key
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key # SSH 2保存RSA位置/etc/ssh/ssh_host_rsa _key
#HostKey /etc/ssh/ssh_host_dsa_key # SSH 2保存DSA位置/etc/ssh/ssh_host_dsa _key
###################################
# 杂项配置 #
###################################
#PidFile /var/run/sshd.pid # 服务程序sshd的PID的文件路径
#ServerKeyBits 1024 # 服务器生成的密钥长度
#SyslogFacility AUTH # 使用哪个syslog设施记录ssh日志。日志路径默认为/var/log/secure
#LogLevel INFO # 记录SSH的日志级别为INFO
#LoginGraceTime 2m # 身份验证阶段的超时时间,若在此超时期间内未完成身份验证将自动断开
###################################
# 以下项影响认证速度 #
###################################
#UseDNS yes # 指定是否将客户端主机名解析为IP,以检查此主机名是否与其IP地址真实对应。默认yes。
# 由此可知该项影响的是主机验证阶段。建议在未配置DNS解析时,将其设置为no,否则主机验证阶段会很慢
###################################
# 以下是和安全有关的配置 #
###################################
#PermitRootLogin yes # 是否允许root用户登录
#MaxSessions 10 # 最大客户端连接数量
#GSSAPIAuthentication no # 是否开启GSSAPI身份认证机制,默认为yes
#PubkeyAuthentication yes # 是否开启基于公钥认证机制
#AuthorizedKeysFile .ssh/authorized_keys # 基于公钥认证机制时,来自客户端的公钥的存放位置
PasswordAuthentication yes # 是否使用密码验证,如果使用密钥对验证可以关了它
#PermitEmptyPasswords no # 是否允许空密码,如果上面的那项是yes,这里最好设置no
###################################
# 以下可以自行添加到配置文件 #
###################################
DenyGroups hellogroup testgroup # 表示hellogroup和testgroup组中的成员不允许使用sshd服务,即拒绝这些用户连接
DenyUsers hello test # 表示用户hello和test不能使用sshd服务,即拒绝这些用户连接
###################################
# 以下一项和远程端口转发有关 #
###################################
#GatewayPorts no # 设置为yes表示sshd允许被远程主机所设置的本地转发端口绑定在非环回地址上
# 默认值为no,表示远程主机设置的本地转发端口只能绑定在环回地址上,见后文"远程端口转发"
/etc/ssh/ssh_host_*
:sshd服务启动时生成的服务端公钥和秘钥文件。~/.ssh/known_hosts
文件中。~/.ssh/authorized_keys
:保存的用户认证阶段基于公钥认证机制时来自客户端的公钥。/etc/ssh/ssh_config
:客户端的全局配置文件GSSAPIAuthentication
是是否在连接时直接跳过身份验证机制,而服务端的GSSAPIAuthentication
则表示是否开启GSSAPI身份验证的机制。# Host * # Host指令是ssh_config中最重要的指令,只有ssh连接的目标主机名能匹配此处给定模式时,
# 下面一系列配置项直到出现下一个Host指令才对此次连接生效
# ForwardAgent no
# ForwardX11 no
# RhostsRSAAuthentication no
# RSAAuthentication yes
# PasswordAuthentication yes # 是否启用基于密码的身份认证机制
# HostbasedAuthentication no # 是否启用基于主机的身份认证机制
# GSSAPIAuthentication no # 是否启用基于GSSAPI的身份认证机制
# GSSAPIDelegateCredentials no
# GSSAPIKeyExchange no
# GSSAPITrustDNS no
# BatchMode no # 如果设置为"yes",将禁止passphrase/password询问。比较适用于在那些不需要询问提供密
# 码的脚本或批处理任务任务中。默认为"no"。
# CheckHostIP yes
# AddressFamily any
# ConnectTimeout 0
# StrictHostKeyChecking ask # 设置为"yes",ssh将从不自动添加host key到~/.ssh/known_hosts文件,
# 且拒绝连接那些未知的主机(即未保存host key的主机或host key已改变的主机)。
# 它将强制用户手动添加host key到~/.ssh/known_hosts中。
# 设置为ask将询问是否保存到~/.ssh/known_hosts文件。
# 设置为no将自动添加到~/.ssh/known_hosts文件。
# IdentityFile ~/.ssh/identity # ssh v1版使用的私钥文件
# IdentityFile ~/.ssh/id_rsa # ssh v2使用的rsa算法的私钥文件
# IdentityFile ~/.ssh/id_dsa # ssh v2使用的dsa算法的私钥文件
# Port 22 # 当命令行中不指定端口时,默认连接的远程主机上的端口
# Protocol 2,1
# Cipher 3des # 指定ssh v1版本中加密会话时使用的加密协议
# Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc # 指定ssh v1版本中加密会话时使用的加密协议
# MACs hmac-md5,hmac-sha1,[email protected],hmac-ripemd160
# EscapeChar ~
# Tunnel no
# TunnelDevice any:any
# PermitLocalCommand no # 功能等价于~/.ssh/rc,表示是否允许ssh连接成功后在本地执行LocalCommand指令指定的命令。
# LocalCommand # 指定连接成功后要在本地执行的命令列表,当PermitLocalCommand设置为no时将自动忽略该配置
# %d表本地用户家目录,%h表示远程主机名,%l表示本地主机名,%n表示命令行上提供的主机名,
# p%表示远程ssh端口,r%表示远程用户名,u%表示本地用户名。
# VisualHostKey no # 是否开启主机验证阶段时host key的图形化指纹
Host *
GSSAPIAuthentication yes
~/.ssh/config
:用户端的用户配置文件,优先级高于全局配置文件,权限严格设置为600。~/.ssh/known_hosts
:保存的是主机验证时服务的host key,来源于服务端的/etc/ssh/ssh_host_rsa_key.pub
/etc/ssh/known_hosts
:全局保存host key的文件。~/.ssh/id_rsa
:客户端生成的私钥,对应的公钥分发给了服务端(在服务端的~/.ssh/authorized_keys
中),用于进行公钥体质的用户认证。权限严格为600.~/.ssh/rc
:保存了客户端在成功ssh连接远程主机后首先执行的命令列表。/etc/ssh/rc
:作用同上。