要使SSH能够正常工作,它需要对~/.ssh或/home/username/.ssh目录具有正确的权限,即所有用户特定的SSH配置和身份验证文件的默认位置。推荐的权限是用户的读/写/执行,并且不能被组和其他用户访问。
此外,SSH还要求目录中的文件必须对用户具有读/写权限,并且不能被其他用户访问。否则的话,用户可能会遇到以下错误:
Authentication refused: bad ownership or modes for directory
其实,如果遇到上述错误,可以使用chmod命令在.ssh目录上设置正确的ssh目录权限。.ssh/目录权限必须为700 或 755
chmod 700 .ssh/
或
chmod 755 .ssh/
authorized_key
权限为644
[jboss@192-168-120-9 ~]$ ll -l .ssh/
total 16
-rw-r--r-- 1 jboss jboss 401 Sep 7 10:04 authorized_keys
-rw------- 1 jboss jboss 1675 Sep 7 10:03 id_rsa
-rw-r--r-- 1 jboss jboss 401 Sep 7 10:03 id_rsa.pub
-rw-r--r-- 1 jboss jboss 176 Sep 7 10:00 known_hosts
免密操作:
#生成密钥,并修改.ssh/目录和authorized_keys 权限
ssh-keygen
rsync -acrt -e 'ssh -p 22' .ssh/ jboss@192.168.120.10:~/
两边都需要安装rsync客户端,传输才会成功。(rsync同步不回改变目录、文件权限)
这种方式拷贝两台服务器私钥公钥都一样,如果有密钥要求则不要采用这种方法
ssh-keygen命令用于为“ssh”生成、管理和转换认证密钥,它支持RSA和DSA两种认证密钥。
语法
ssh-keygen(选项)
选项
-b:指定密钥长度;
-e:读取openssh的私钥或者公钥文件;
-C:添加注释;
-f:指定用来保存密钥的文件名;
-i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;
-l:显示公钥文件的指纹数据;
-N:提供一个新密语;
-P:提供(旧)密语;
-q:静默模式;
-t:指定要创建的密钥类型。
以下是你将在~/.ssh目录中找到的一些文件:
- authorized_keys – 包含可用于以该用户身份登录的公钥列表。它不是高度敏感的,但应该具有所有者的读写权限,并且不能被组和其他人访问。
- private key file (相当于id_rsa ) – 用于认证的私钥,包含高度敏感的信息,因此必须对所有者有读写权限,不能被组和其他人访问,否则ssh会拒绝连接。
- public key(如id_rsa.pub 文件)——用于身份验证的公钥,其中还包含敏感信息,因此它应该具有所有者的读写权限、组的只读权限等。
- known_hosts – 存储ssh用户已登录的所有主机的主机密钥列表。它应该具有所有者的读写权限,并且不能被组和其他人访问。