ubuntu 启用ssh服务比较简单,但是使用证书免密码登录,有点麻烦,但是原理还是比较清晰的;
以下示例中ubuntu16上测试通过。
一:服务器安装 ssh 服务
安装
sudo apt install openssh-server
重启ssh服务(只有当修改 /etc/ssh/ssh_config 后,才需要重启),本示例中不需要修改该文件
sudo /etc/init.d/ssh restart
二:客户端登录
如果没有安装ssh客户端,默认已安装
sudo apt install openssh-client
使用用户名和密码登录
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 文件中
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
将前面的 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服务器。
如果对你有用,请赞助我一点咖啡豆