免密登录
原理:首先由用户生成一对密钥,然后将公钥保存在 SSH 服务器用户的目录下,ssh 子目录中的 authorized_key 文件里(/root/.ssh/authorized_key)。私钥保存在本地计算机,当用户登陆时,服务器检查 authorized_key 文件的公钥是否与用户的私钥对应,如果相符则允许登入,否则拒绝。由于私钥只有保存在用户的本地计算机中,因此入侵者就算得到用户口令,也不能登陆到服务器。
配置文件路径: /etc/ssh/sshd_config
。
注意,非 root 用户的 SSH 秘钥路径为:/home/xxx/.ssh
,如果是使用非 root 用户,以下教程步骤需要修改一下 ssh 的秘钥路径。我自己处理这个问题的时候,一直弄的是 /root/.ssh/
路径下的秘钥,一直没成功,最后发现是用户的问题,换到 /home/xxx/.ssh/
路径下的秘钥即可。
如,192.168.0.1 的主机要给 192.168.0.2 的主机远程复制 scp。
1 生成密钥(服务器1)
使用命令 ssh-keygen -t rsa
生成密钥(生成过程全部直接回车)
2 备份公钥(服务器1)
将 /root/.ssh/id_rsa.pub
复制为 /root/.ssh/id_rsa.pub_temp
cp /root/.ssh/id_rsa.pub /root/.ssh/id_rsa.pub_temp
将 /home/kduser/.ssh/id_rsa.pub
复制为 /home/kduser/.ssh/id_rsa.pub_temp
cp /home/kduser/.ssh/id_rsa.pub /home/kduser/.ssh/id_rsa.pub_temp
3 复制公钥给另一台主机(服务器1)
将 id_rsa.pub_temp
文件远程复制 scp 到另一台目标机的 /root/.ssh/
目录中
scp /root/.ssh/id_rsa.pub_temp root@192.168.0.2:/root/.ssh/
将 id_rsa.pub_temp
文件远程复制 scp 到另一台目标机的 /root/.ssh/
目录中
scp /home/kduser/.ssh/id_rsa.pub_temp kduser@192.168.0.2:/home/kduser/.ssh/
如果服务器2中没有该目录,可以执行生成一下密钥就有了,或者手动创建目录。
4 创建认证文件(服务器2)
在服务器2 的 /root/.ssh/
文件夹下创建文件 authorized_keys: touch authorized_keys
在服务器2 的 /home/kduser/.ssh/
文件夹下创建文件 authorized_keys: touch authorized_keys
5 把公钥内容追加到认证文件中(服务器2)
cat id_rsa.pub_temp >> authorized_keys
修改文件权限及所有者
用户组
在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念
- 所有者
一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者
用ls ‐ahl命令可以看到文件的所有者
也可以使用 chown 用户名 文件名来修改文件的所有者
- 文件所在组
当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组
用ls ‐ahl命令可以看到文件的所有组
也可以使用chgrp 组名 文件名来修改文件所在的组
- 其它组
除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组
文件权限
ls -l
中显示的内容如下:
-rwxrw-r‐-1 root root 1213 Feb 2 09:39 abc
前 10 个字符确定不同用户能对文件干什么。
- 第一个字符代表文件(-)、目录(d),链接(l)
- 其余字符每3个一组(rwx),读(r)、写(w)、执行(x)。也可用数字表示为:r=4,w=2,x=1 因此rwx=4+2+1=7
- 第一组rwx:文件所有者的权限是读、写和执行
- 第二组rw-:与文件所有者同一组的用户的权限是读、写但不能执行
- 第三组r--:不与文件所有者同组的其他用户的权限是读不能写和执行
- 1 表示连接的文件数
- root 表示用户
- root表示用户所在的组
- 1213 表示文件大小(字节)
- Feb 2 09:39 表示最后修改日期
- abc 表示文件名
改变权限命令
chmod 755 abc
:赋予 abc 权限 rwxr-xr-x
chmod u=rwx, g=rx, o=rx abc
:同上 u=用户权限,g=组权限,o=不同组其他用户权限
chmod u-x, g+w abc
:给 abc 去除用户执行的权限,增加组写的权限
chmod a+r abc
:给所有用户添加读的权限
改变所有者(chown)和用户组(chgrp)命令
查看:ls -al
chown binjf abc
:改变 abc 的所有者为 binjf
chgrp root abc
:改变 abc 所属的组为 root
chown root ./abc
:改变 abc 这个目录的所有者是root
chown ‐R root ./abc
:改变 abc 这个目录及其下面所有的文件和目录的所有者是root
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。