〇、服务器SSH免密登录
- 本地生成公钥和私钥
ssh-keygen -t rsa
- 找到文件
~/.ssh/id_rsa.pub
,复制文件内全部内容 - 登录服务器,找到
~/.ssh/authorized_keys
文件,如果没有创建一个 - 将复制的内容copy到
authorized_keys
文件中,保存
一、基本语法
- 登录
ssh -p 22 user@host
参数:
- -p:指定端口号。
- user:登录的用户名。
- host:登录的主机。
默认的端口号为22,当端口号为22的时候,可以省略
- 注销
exit
- 远程操作
# 例
ssh user@host 'netstat -tln |grep 1080'
- 端口转发
转发参数:
-C:压缩数据
-f :后台认证用户/密码,通常和-N连用,不用登录到远程主机。
-N :不执行脚本或命令,通常与-f连用。
-g :在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。
-L : 本地端口:目标IP:目标端口
-D : 动态端口转发
-R : 远程端口转发
-T :不分配 TTY 只做代理用
-q :安静模式,不输出 错误/警告 信息
- 本地转发
#把发到本地的某个端口请求,转发到远程的某台机器上面
ssh -L [本地地址:]本地端口:远程地址:远程端口 远程用户@远程地址
#把发给远程机器的某个端口请求,转发到本地的机器上面
ssh -R [远程地址:]远程端口:本地地址:本地端口 远程用户@远程地址
二、公私钥登录
- 原理说明
1. 首先在客户端生成一对密钥(ssh-keygen)
2. 并将客户端的公钥ssh-copy-id 拷贝到服务端
3. 当客户端再次发送一个连接请求,包括ip、用户名
4. 服务端得到客户端的请求后,会到authorized_keys中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:qwer
5. 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端
6. 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端
7. 服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录
- 生成公钥和私钥
ssh-keygen命令,可以生成公钥和私钥,默认生成到用户的家目录下的.ssh文件夹里面
ssh-keygen -t rsa
- 私钥默认会被保存在
~/.ssh/id_rsa
- 公钥默认会被保存在
~/.ssh/id_rsa.pub
#例
ssh-keygen -f [fileName] -t rsa -C "user@host"
参数解析:
- -f 指定要生成文件的文件名称
- -t 设置认定方式,值为rsa,即非对称加密;或dsa,即数字签名和认证
- -c 指定公钥中的备注信息
三、相关命令
- 查看是否启用了ssh:
netstat -ntlp |grep ssh
- 启动、停止、重启服务
- 开启ssh服务
service sshd start
- 停止ssh服务
service sshd stop
- 重启ssh服务
service sshd restart
- 配置ssh-server,配置文件位于/etc/ssh/sshd_config
- 默认端口为22,为了安全,一般自定义为其他端口,然后重启
常用命令
- 复制本地文件到远程主机:
# 文件
scp file_name username@hostname:/remote/directory
#目录
scp -r local_directory username@hostname:/remote/directory
- 拉取远程文件到本地
scp username@hostname:/remote/directory/file .
- 执行远程命令
ssh username@hostname [commond]
网友评论