目录(步骤):
- 安装和配置
- 密钥对生成
一、安装和配置
- 安装服务器端Server:sudo apt-get install openssh-server(最好先update一下)
- 查看sshd是否启动:ps -ef|grep ssh,如果没有,启动服务:service ssh start,centos下是sshd,相当于/etc/init.d/ssh start/stop/restart
- 配置文件为:/etc/ssh/sshd_config,其中重要的参数为
- 默认端口 :Port 22
- 认证方式:PasswordAuthentication yes/no 代表是否允许使用密码远程登录(最好不要密码登陆,不安全,可以通过日志文件/var/log/secure查看)
- root用户登录方式:默认可能是PermitRootLogin without-password会使有设置密码的root无法登录,可改为为PermitRootLogin yes
- 查服务器IP:ifconfig
- 客户端是Linux时:apt-get install openssh-client(ssh-agent),Linux通过ssh访问服务器:
- 密钥登陆 ssh -i 【私钥绝对路径】-p 【端口】username@IP
- ssh username@IP
- Windows通过ssh访问服务器:安装putty之类的软件,putty的使用参考使用密钥登陆有公网IP的Linux云服务器,相关配置参数就百度吧,很简单。putty.exe和puttygen.exe下载地址http://www.putty.nl/download.html
- 我的putty常用配置
- 设置闲置时发送空包维持SSH连接(10),行100,列40
- 配色 ANSI blue(ls目录颜色):85,85,255,字体大一点
- 保存配置注意:名 -testing ,然后点击save才有效(或删除再保存更方便)
二、密钥对生成
使用密码登陆的话当然就不需要看这里了,但是密码登陆不安全,我都是禁用的,一般都用密钥登陆方式,步骤如下:
- 最好不要用puttygen(Windows下的软件)生成密钥对然后上传到服务器,原因有二:
- 第一,最初使用这种方法登陆时一直报错密钥无法匹配,初学者可能意识不到这是没有chmod公钥所属用户和组的原因
- 第二,这种方法需要手动在服务器上相应用户的家目录下创建.ssh目录并修改权限,而且,puttygen生成的公钥格式和Linux上生成的有点小区别,需要上传后自己去更改
- 如果有兴趣尝试:参考putty的使用和puttygen生成密钥对
- ssh-keygen -t rsa -C usermail,在Linux上生成密钥对,以下假设是用户John执行该命令
- 注意:哪个用户希望通过密钥方式登录,就在哪个用户下执行该命令,原因继续看你就知道了
- 安装openssh后就会有这个命令了,其中rsa是加密方式,usermail可以不填。
- 执行以上命令后会让你输入密钥放置位置,默认是/home/John/.ssh/,直接回车即可;接下来会让你输入密钥密码,不想要密码直接回车
- 执行完毕会在/home/John/.ssh/下看到公钥id_rsa和私钥id_rsa.pub,输入ll查看他们的所属组和用户,就会发现是John和John所在的组,这就是直接在服务器生成密钥的一个好处,而且.ssh/目录的权限也配置好了
- 因此:
- 修改公钥id_rsa.pub的名字,mv id_rsa.pub authorized_keys
- 将私钥传到本地,删除服务器上的私钥(避免被盗),Windows系统的一些软件如putty就需要把密钥转为.ppk格式。参考使用密钥登陆有公网IP的Linux云服务器
- 可能遇到的问题:
- 如果服务器是连接到路由上的:在路由管理页面中设置端口映射到服务器对应IP(最好设置静态IP)的对应端口,然后在ssh的配置文件中添加该监听端口
- 如果是直接复制ubuntu的.ssh/目录到John下(即复制公钥):一定记住要chmod改变用户和组,否则会报错permission denied(publickey)之类的error
- 若无法用【账号+密码】方式登录,提示错误为no supported authentication methods available,需改/etc/ssh/sshd_config中的参数【PasswordAuthentication yes】和【PermitRootLogin yes】,不过最好用密钥吧