以Centos7为例
一、使用密码登陆(不推荐)
1、修改服务器的ssh配置文件
vim /etc/ssh/sshd_config
在文件最后添加PasswordAuthentication yes,如果要使用root用户登陆,找到#PermitRootLogin yes,去掉#注释
2、本地终端使用ssh命令登陆
ssh username@ip
如果是第一次使用SSH登陆这个服务器,系统会提示该主机地址不在known host里,这时输入yes就可以继续了。然后系统会提示你输入密码,输入正确后,就成功连接了
二、使用密钥登陆(推荐方式)
直接使用密码登陆并不安全,可能会出现中间人攻击。更安全的方式是使用密钥登陆,使用这种方式,服务器给其他人登陆时,只需要在服务器上添加他的公钥就行了,不需要告诉密码。密钥登陆使用的是非对称加密,需要在服务器和客户机都创建ssh密钥,一个ssh密钥包括一个公钥和一个私钥
非对称加密的原理如下:若A、B使用非对称加密方式进行通信,A向B发送信息时,使用B的公钥进行加密,B收到后使用自己的私钥进行解密,B向A发送信息时,使用A的公钥进行加密,A收到后使用自己的私钥进行加密。
ssh密钥登陆的验证流程:首先需要将客户机的的公钥添加到服务器的authorized_keys,客户机使用ssh连接服务器时,服务器会使用客户机的公钥加密一串随机数发给客户机,客户机收到后使用自己的私钥进行解密发给服务器,服务器验证信息是否正确,如果正确就身份验证通过,开启远程连接
具体配置流程如下
1、生成ssh密钥
分别在本机和服务器上执行下面的命令来生成密钥,一直回车即可
ssh-keygen -t rsa -C "xxx" //-C是追加到公钥文件末尾以便于识别的注释。 通常以电子邮件地址用作注释
本机的密钥生成后,在用户/.ssh文件夹下会生成两个文件
id_rsa //私钥文件,妥善保管,不要泄露
id_rsa.pub //公钥文件
2、上传本机的公钥到服务器
将本机id_rsa.pub文件的内容添加到服务器用户名/.ssh/authorized_keys文件中,如果没有就创建
3、修改服务器ssh配置文件
vim /etc/ssh/sshd_config
找到#PubkeyAuthentication yes,去掉#注释,如果要使用root用户登陆,找到#PermitRootLogin yes,去掉#注释
4、本地终端使用ssh命令进行连接
ssh username@ip
第一次登陆这个服务器,系统会提示该主机地址不在known host里,输入yes继续
5、为服务器配置别名,方便后续登陆和scp操作(可选)
在本机的用户/.ssh文件夹下新建一个名为config的文件
填入以下内容
Host 别名
HostName 服务器ip
User 用户名
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
之后就可以直接使用ssh 别名的方式来登陆服务器了