SSH 是 Secure Shell 的缩写,称为安全外壳协议 ,SSH 为建立在应用层和传输层基础之上的安全协议。
SSH 端口:22
Linux中的守护进程:sshd
安装的服务:OpenSSH
服务端主程序:/usr/sbin/sshd
客户端主程序:/usr/bin/ssh
服务端配置文件:/etc/ssh/sshd_config
客户端配置文件:/etc/ssh/ssh
linux中的SSH即可以作为【客户端】可以访问其他服务器的【22】号端口。也可以作为服务器为其它访问提供服务。
ssh_config客户端配置:
Host * :对那台计算机有效,* 所有计算机有效
ForwardAgent no :设置连接是否经过验证代理,(如果存在)转发给远程计算机
ForwardX11 no:设置X11连接是否被自动重定向到安全的通道和显示集(SISPLAY Set)
RhostsAuthentication :设置是否使用基于rhosts的安全验证。
RhostsRSAAuthentication on :设置是否使用RSA算法的基于rhosts的安全验证。
RSAAuthentication yes :设置是否使用RSA算法进行安全验证。
PasswordAnthentication yes :设置是否使用口令验证。
FallBackToRsh no :设置如果用shh连接出现错误是否自动使用rsh。
UseRsh no:设置是否在这台计算机上使用“rlogin/rsh”
BatchMode no:如果设为yes,passphrase/password(交互式输入口令)的提示将被禁止。
不能交互式输入口令的时候,这个选项对脚本文件盒批处理任务十分有用。
CheckHostIP yes:设置ssh是否查看连接到服务器主机的IP地址以防止DNS欺骗。建议Yes
StrictHostKeyChecking no:如果设置为yes,ssh就不会自动把计算机的密钥加入“¥HOME/.ssh/known_hosts”文件,并且一旦计算机的密钥发生了变化,就拒绝连接。
IdentityFile :设置从哪个文件读取用户的RSA安全验证标识。
Port 22: 连接到远程主机的端口号。
Cipher :设置加密用的密码。
EscapeChar ~ :设置escape字符。
sshd_config服务端配置:
Port 22:设置sshd监听的端口号。
ListenAddress 192.168.2.1 :设置sshd服务器绑定的IP地址。
HostKey /etc/ssh/ssh_host_key:设置包含计算机私人密钥的文件。
ServerKeyBits 1024:定义服务器密钥的位数。
LoginGraceTime 600:设置如果用户不能成功登入,再断开之前服务器需要等待的时间(秒)。
KeyRegenerationInterval 3600:设置在多少秒之后自动重新生成服务器的密钥
PermitRootLogin no :设置root能不能用ssh登入。这个选项一定不要设成yes。
IgnoreRhosts yes:设置验证的时候是否使用“rhosts”和“shosts”文件。
IgnoreuserKnownHosts yes :设置ssh daemon是否在进行RhostsRSAAAuthentication安全认证的时候忽略用户的“¥HOME/.ssh/known_hosts”
StrictModes yes:设置ssh在接收登入请求之前是否检查用户家目录和rhosts文件的权限和所有权,这通常是必要的,因为新手经常会把自己的目录和文件设成任何人都有写的权限。
X11Forwarding no:设置是否允许X11转发
PrintMotd yes:设置sshd是否在用户登入的时候显示“/etc/motd”中的信息。
SyslogFacility AUTH:设置在记录来着sshd的消息的时候,是否给出“facility code”。
LogLevel INFO 设置记录sshd日志消息的层次。INFO是一个好的选择,查看sshd的man帮助页。
以获得更多的信息。
RhostsAuthentication no :设置只用rhosts或/etc/hosts.equiv进行验证是否已经足够了。
RhostsRSAAuthentication no:设置是否rhosts或/etc/hosts.equiv加上RSA进行安全验证。
RSAAuthentication yes :设置是否预先只有RSA安全验证。
PasswordAuthentication yes:设置是否预先口令验证。
PermitEmptyPasswords no:设置是否允许用口令为空的账号登入。
AllowUsers admin:后面可以跟着任意的数量的用户名的匹配窜(patterns)或user@host这样的匹配串,这些字符串用空格隔开。主机名可以是DNS名或IP地址。
安全的做法是:用钥匙对登录,并且将permitRootLogin改为 no , passwordauthentication 改为 no
SSH远程管理命令
远程登录
#从本地主机通过SSH命令登录到远程服务器
#ssh 用户名@IP
#ssh [email protected]
远程上传和下载
####下载 把远程服务器 root目录下的 test.txt文件下载到本地主机的当前目录里
#scp [email protected]:/root/test.txt ./
####上传 把本地主机root目录下的123目录里的文件上传到 远程服务器的root目录下
#注意:如果要上传【目录】需要添加【 -r 】选项
#scp -r /root/123/ [email protected]/root
密钥对验证登录:过程图
这里注意一点:客户端上传的公钥放在服务器端谁的目录下,就表示要以谁的账号来认证登录。
好处:1:不需要用密码登录
2:访问方便,用私钥可以在哪里都能登录。
要注意:保护好自己私钥的安全,不要被别人盗取了。
创建主要过程:
步骤1
在本地linux主机上创建密钥,(也可以用密钥生成工具创建密钥)。
[root@iZbp1az5g589195umzubrzZ ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:e0CJhYE8VIOZw+kQN5CSe+4yyapo699fcSY/NBOgq4U root@iZbp1az5g589195umzubrzZ
The key's randomart image is:
+---[RSA 2048]----+
| .oB+B+o.. |
|o o.@..+... |
| o o o..o . |
|. . . ... . |
| o E oSo * |
| . o oB o |
|.o . ...o |
|=o. . .. . |
|O=o. ... |
+----[SHA256]-----+
Enter file in which to save the key :直接回车
Enter passphrase :不需要 输入密码直接回车
Enter same passphrase again: 同样不需要输入密码直接回车。
查看创建好的密钥
[root@iZbp1az5g589195umzubrzZ ~]# cd .ssh
[root@iZbp1az5g589195umzubrzZ .ssh]# ls
authorized_keys id_rsa id_rsa.pub
[root@iZbp1az5g589195umzubrzZ .ssh]# ls -lh
总用量 12K
-rw------- 1 root root 406 9月 27 18:16 authorized_keys #授权公钥
-rw------- 1 root root 1.7K 3月 16 14:21 id_rsa #密钥
-rw-r--r-- 1 root root 410 3月 16 14:21 id_rsa.pub #公钥
上传公钥到服务器端的 root家目录,表示如果用这个密码链接远程服务器,则登录到远程服务器以后就是root身份。
➜ .ssh scp id_rsa.pub [email protected]:/home/root
Enter passphrase for key '/Users/cdz/.ssh/id_rsa':
id_rsa.pub 100% 412 264.4KB/s 00:00
在服务器端手工建立 .ssh目录(如果.ssh目录不存在)。
并通过追加的方式把 id_ras.pub 添加到 .ssh目录下的authorized_keys。
并修改该文件的权限为600除了root其它用户不允许操作。
步骤2
在远程服务器端修改/etc/ssh/sshd_config文件,按一下设置:
步骤3
测试
本地linux服务器登录测试
window客户端登录
用远程下载工具把 192.168.0.196中生成的私钥,下载出来。
在window系统当中,连接192.168.0.198时,在 secureCRT的 tool中选择 manage agent Keys
把下载的私钥导入进去。然后点击重新连接,就可以在window的客户端使用秘钥对登录远程服务器。