Centos免密登陆
证书登录:
这里说的证书其实就是密钥. 在非对称加密中, 密钥分为公钥和私钥. 私钥, 即密钥所有人持有. 公钥则公布给他人. 公钥和私钥成对使用, 互相解密. 公钥加密数据只能用私钥解密; 私钥加密则只能用公钥解密(验证)
证书登录原理:
密钥对生成后, 公钥存储于远程服务器. 登录时远程服务器向客户端发送随机字符串, 客户端以私钥加密后返回服务器, 服务器再以公钥解密. 解密成功则证明客户端合法, 允许登录,生成的密钥仅对当前用户有效.
SSH免密码原理
1、client向Server 发出连接请求,
2、Server 端向client发出自己的公钥
3、client使用Server端的公钥加密通讯密钥然后发给Serve端
4、如果通讯过程被截获,由于窃听者即使获知公钥和经过公钥加密的内容,但不拥有私钥依然无法解密(RSA算法)
5、 Server端接收到密文后,用私钥解密,获知通讯密钥
/root/.ssh目录存放文件清单:
authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥
id_rsa : 生成的私钥文件
id_rsa.pub : 生成的公钥文件
know_hosts : 已知的主机公钥清单
如果希望ssh公钥生效需满足至少下面两个条件:
1) .ssh目录的权限必须是700
2) .ssh/authorized_keys文件权限必须是600
1.创建公钥私钥:
ssh-keygen -t rsa
ssh-keygen是一个用来生成和管理ssh密钥的工具
-t参数用于指定密钥类型, 或者说加密算法. 本次使用rsa算法. 除此以外还有rsa1, dsa可选
2、将本地公钥写入authorized_keys. 目录下多出一个文件authorized_keys
3、将其他机器的公钥拷贝到服务器authorized_keys文件中:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.1.4
.常用以下几种方法:
通过ssh-copy-id的方式
1、ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.1.4
2、scp -p ~/.ssh/id_rsa.pub 10.0.1.4:/root/.ssh/authorized_keys
然后运行以下命令来将公钥导入到~/.ssh/authorized_keys这个文件中 $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
设置禁用密码登录
sudo vim /etc/ssh/sshd_config
# 禁止密码登录。原先为PasswordAuthentication yes PasswordAuthentication no # 禁止 root 登录,看情况是否需要。原先为PermitRootLogin yes PermitRootLogin no
service restart sshd.service
证书登陆:
如果使用证书登陆需要下载私钥
home/.ssh下私钥id_rsa下载到本地
sftp 常用命令:
- sftp user@ip
在 Linux 的 shell 中执行上面的命令后,Linux shell 会提示用户输入密码, 输入 password 之后就成功建立了 sftp 连接。 - help
建立连接后, Linux shell 中的 $ 变成 sftp>。 执行 help, 可以看 sftp 支持哪些命令。 - pwd 和 lpwd
pwd 是看远端服务器的目录, 即 sftp 服务器默认的当前目录。
lpwd 是看 linux 本地目录。 - ls 和 lls
ls 是看 sftp 服务器下当前目录下的内容
lls 是看 linux 当前目录下的内容。 - put a.txt
这个是把 linux 当前目录下的 a.txt 文件上传到 sftp 服务器的当前目录下。 - get b.txt
这个是把 sftp 服务器当前目录下的 b.txt 文件下载到 linux 当前目录下。$ get openssl-1.1.1i.tar.gz ~/
- !command
这个是指在 linux 上执行 command 这个命令, 比如!ls 是列举 linux 当前目录下的内容, !rm a.txt 是删除 linux 当前目录下的 a.txt 文件。 这个命令非常有用, 因为在 sftp> 后输入命令, 默认只针对 sftp 服务器的, 所以执行 rm a.txt 删除的是 sftp 服务器上的 a.txt 文件, 而非本地的 linux 上的 a.txt 文件。 - exit 和 quit
退出。
SSH 设置别名访问远程服务器
使用 cd ~/.ssh/
进入 ssh 目录,会看到有 config、known_hosts 两个文件,一般没有设置的话,只会有 known_hosts,可以使用 touch config 命令创建 config 文件。
使用 vim 编辑 config 文件,添加如下内容(或直接只用 cat >> 添加内容):cat >>~/.ssh/config<<EOF
Host xxx1
HostName 192.168.100.101
User root
IdentitiesOnly yes
Host xxx2
HostName 192.168.100.102
User root
IdentitiesOnly yes
Host xxx5
HostName 192.168.100.103
User root
IdentitiesOnly yes
EOF
其中:
- Host 后边的是名称,以后可以根据这个名称进行访问;
- HostName 是你的主机 IP 地址;
- User 为主机登录的用户名;
- IdentitiesOnly yes 固有配置;