Ubuntu 启用ssh服务比较简单,但是使用证书免密码登录,有点麻烦,大部分百度搜索出来的文档都没有把处理说清楚,但是原理还是比较清晰的; 以下示例中ubuntu16上测试通过。
一:启用 ssh 服务 安装
sudo apt install openssh-server
重启ssh服务(只有当修改 /etc/ssh/ssh_config 后,才需要重启),本示例中不需要修改该文件
sudo /etc/init.d/ssh restart
二:客户端登录 使用用户名和密码登录
ssh server_ip -l username
或者
ssh username@server_ip
三:使用证书免密码登录 1、在要登录的客户端创建key
ssh-genkey -P “” #-P 表示创建证书不使用密码
运行完成后将在 ~/.ssh/ 中产生 id_rsa id_rsa.pub 两个文件, 第二个文件是公钥,需要放到服务器相应ssh用户的 ~/.ssh/ 目录的 authorized_keys 文件中
客户端系统当前登录的用户和需要登录的ssh服务器账号用户不需要有任何对应关系,后面登录ssh服务器时,只需要传入这里生存的私钥的位置即可。
2、把 id_rsa.pub 文件拷贝出来,弄到 ssh 服务器上去 sudo nautilus #这样打开文档管理器才可以有root 权限,才可以从任意目录拷贝文件
3、转到 ssh 服务器 3.1 创建要使用 ssh 登录的用户,如果已创建,跳过 sudo adduser gituser1 #这里用gituser1示例
3.2 切换到gituser1用户创建 .ssh 目录 如果已经有该目录,跳过 su gituser1 cd ~ mkdir .ssh
3.3 导入公钥文件到用户的~/.ssh/authorized_keys 将前面的 id_rsa.pub 文件弄到 ~ 目录中 sudo mv ~/id_rsa.pub ~/.ssh/authorized_keys 如果 authorized.keys 文件已存在,将内容追加到该文件中 sudo cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
4、客户端使用证书免密码登录
ssh -i ~/.ssh/id_rsa gituser1@server_ip
5、客户端一般不会只ssh这一个服务器,修改gituse1的私钥名称 将 ~/.ssh/id_rsa 改名 sudo mv ~/.ssh/id_rsa ~/.ssh/id_rsa_gituser1_svr1 登录命令相应调整为 ssh -i ~/.ssh/id_rsa_gituser1_svr1 gituser1@server_ip
6、让ssh默认使用证书,不需要用i参数指定
6.1 方法一:修改 /etc/ssh/ssh_config 文件 sudo gedit /etc/ssh/ssh_config 加入以下代码段 IdentityFile ~/.ssh/id_rsa_gituser1 然后用ssh登录就不需要用 -i 参数指定证书了 这个方法是修改了全局证书, 日常使用中我们会通过ssh登录各个不同的服务器, 这显然是不行的,现在需要下面这个方法;6.2 方法二:修改 ~/.ssh/config sudo gedit ~/.ssh/config 写入如下 host usvr1 HostName 192.168.11.202 port 22 IdentityFile ~/.ssh/id_rsa_gituser 以后就可以用下面命令登录 ssh gituser1@usvr1 我们还可以在config文件中加入其他ssh服务器。如果对你有帮助,请微信扫一扫打赏。
新闻热点
疑难解答
图片精选