一. 生成密钥对
- 如果本地已存在密钥文件,则可跳过该步骤(可与
git
等工具共享密钥文件)。 - 在本地生成
~/.ssh/id_rsa(密钥)
和~/.ssh/id_rsa.pub(公钥)
两个文件。
# 查看是否存在密钥文件
$ ls ~/.ssh
# 生成公钥私钥(可连续回车,忽略填写密码等步骤)
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/fdipzone/.ssh/id_rsa): #输入要生成的文件名
Enter passphrase (empty for no passphrase): #输入密码
Enter same passphrase again: #重复输入密码
Your identification has been saved in /home/fdipzone/.ssh/id_rsa.
Your public key has been saved in /home/fdipzone/.ssh/id_rsa.pub.
The key fingerprint is:
f2:76:c3:6b:26:10:14:fc:43:e0:0c:4d:51:c9:a2:b0 fdipzone@ubuntu
The key's randomart image is:
+--[ RSA 2048]----+
| .+=*.. |
| . += + |
| o oo+ |
| E . . o |
| ..S. |
| .o . |
| .o + |
| ...oo |
| +. |
+-----------------+
二. 上传本地公钥
- 可以到服务端直接编辑用户授权文件,即把公钥内容追加到
authorized_keys
文件末尾;也可以使用ssh-copy-id
命令拷贝到远程服务端。 - root用户对应服务端的
/root/.ssh/authorized_keys
文件; - 普通用户对应服务端的
/home/用户名/.ssh/authorized_keys
文件;
# 上传公钥,f表示强制追加(多次执行,会生成多条同样的信息)
$ ssh-copy-id -f user@hostname
#指定本地identity文件
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@hostname
三. 团队成员授权
- 作为服务器管理人员,我们经常需要创建团队成员账号,如开发人员账号。
1. 设定成员信息
# 使用root角色执行
$ UserName='zhang' && Password='My@linux.com' && Comment='张三'
2. 创建成员账号
$ groupadd developer # 建议使用户属于某个用户组
$ useradd -g developer -c $Comment $UserName
$ echo $Password | passwd --stdin $UserName #如果用户无需执行sudo命令,则可不设置密码
# id $UserName #查看用户信息
# cat /etc/<passwd|shadow|group> #用户|密码|组信息
# userdel $UserName #删除用户
# groupdel developer #删除组
2. 添加成员的公钥(必须切换到该用户
)
$ su $UserName #切换用户
# 创建.ssh目录和authorized_keys文件,并赋予相应操作权限
$ mkdir ~/.ssh && touch ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
# 将用户的公钥(id_rsa.pub)追加到authorized_keys
$ echo "ssh-rsa AAA.............................A10OB jack@126.com" >> ~/.ssh/authorized_keys
3. 测试免密登录
$ ssh user@hostmame
参考:
https://www.ssh.com/ssh/command