1 ssh 登录
在 Linux 之间相互登录的时候,通常可以用 ssh 来从命令行窗口登录。
比如在 centos00 上需要登录 centos01 ,执行一些操作,可以在 centos00 的命令窗口中执行:
ssh centos01
Warning: Permanently added the ECDSA host key for IP address '192.168.1.10' to the list of known hosts.
此时我们需要输入密码, 并且默认登录用户是当前连接的用户。
如果我们使用的用户是远程服务器上不存在的用户,会如何?
当然是无法登陆。
在 Linux 下新建一个用户并设置其密码:
useradd srvrep -U
passwd srvrep
使用 ssh 去登录远程服务器,发现登录不了
Permission denied, please try again.
因此需要在远程服务器上预先建立同名用户。
是否可以借助命令行客户端,使用指定账户来登录远程服务器
即使本地没有创建远程服务器上的有效账户,也依然可以借助本地的命令行窗口,使用有效的账户来登录远程服务器。
ssh licy@centos00
执行之后,会提示输入相应的密码来登录。
2 无密码登录
无密登录也是通过 ssh 实现的,大概步骤如下:
- 在客户端(经常使用其来登录远程服务器)生成一对密钥对
- 将公钥放入远程服务器账户下
生成密钥对的命令工具是:
ssh-keygen [-t rsa|dsa ]
如果没有指定特定的加密算法,默认是用 rsa 来加密。
[huangyun@centos00 ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/huangyun/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/huangyun/.ssh/id_rsa.
Your public key has been saved in /home/huangyun/.ssh/id_rsa.pub.
The key fingerprint is:
00:3a:11:95:62:01:de:f0:20:a6:62:5d:b4:f3:ea:d7 huangyun@centos00
The key's randomart image is:
+--[ RSA 2048]----+
|o=++++ |
|= Ooo.. |
|o+o= o. |
|o . o. |
| .S |
| . |
| . . |
| . . E |
| .. |
+-----------------+
[huangyun@centos00 ~]$
无密登录,如果在生成 key 的过程中,指定了密码,会有怎么样的效果,上面的例子便是指定了密码的,l*******n*****6.
将 /home/huangyun/.ssh/id_rsa.pub 添加到远程服务器 centos01 的公钥文件下:
scp id_rsa.pub huangyun@centos01
需要在远程服务器 centos01 下将公钥加入本账户下的 ~/.ssh/authorized_keys 文件中去。
cat id_rsa.pub >>.ssh/authorized_keys
chmod 644 authorized_keys
authorized_keys 文件可能不在.ssh 目录下,但 cat 命令会自动创建它。也有可能不起效果,那么就要查看 sshd 配置文件对 authorized_keys 的配置指定了:
cat /etc/ssh/sshd_config
当在生成公私钥的过程中,如果指定了 passphrase 那么依旧需输入密码
[huangyun@centos00 .ssh]$ ssh centos01
Enter passphrase for key '/home/huangyun/.ssh/id_rsa':
huangyun@centos01's password:
所以删除这些文件,重复一边上面的流程,在生成 key 的时候,不指定密码即可。