ssh remote login
安装ssh
一般都是在本地PC通过ssh远程连接服务器,在本地PC基本都有ssh client程序,而服务器不一定会有ssh server程序。所以首先第一步要确认服务器是否已经安装了ssh server程序(即openssh-server),若已经安装,则跳过;若没有安装,则接下来安装步骤。
服务器上检查是否安装 openssh-server
可以通过如下命令查询:
dpkg -l | grep openssh-server
服务器上安装openssh-server
可以通过如下命令安装:
sudo apt update && sudo apt install openssh-server
服务器上检查sshd服务是否启动
可以通过几种方式去查询,如下:
1
2
3
4
5
6
7
8# 方式1
ps -ef | grep sshd
# 方式2
systemctl status ssh
# 方式3
service ssh status若服务没有启动,则可以通过几种方式去启动,如下:
1
2
3
4
5# 方式1
systtemctl start ssh
# 方式2
service ssh start
至此,在服务器上安装ssh(即openssh-server)完成。
登录ssh
在服务器上安装ssh后,可以在本地PC通过ssh client连接到服务器ssh server,登录的方式有:秘钥登录 和 公钥登录。
秘钥登录
秘钥登录就是通过用户名和密码进行登录,例如通过秘钥登录到树莓派(作为服务器角色)
1 | # raspberry是树莓派的主机名,也可以替换为树莓派的IP地址。执行命令后,会要求输入pi用户的密码。 |
注意:这里没有使用树莓派的IP,而是使用树莓派的主机名。因为树莓派启动了avahi-daemon服务,将树莓派主机名通过mDNS组播,这样树莓派主机名就可以替换它的IP地址。
1 | pi@raspberrypi:~$ ps -ef | grep avahi |
公钥登录
公钥登录是指将本地PC的公钥上传到服务器上,本地PC将登录信息用私钥签名给服务器,服务器用本地PC的公钥鉴别。
本地PC创建公钥
通过命令创建公钥:
ssh-keygen
,接下来按下两次次回车键即可创建完成。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21pi@raspberrypi:~$ ssh-keygen -t rsa -C "caoj97141@gmail.com" -f ~/.ssh/id_rsa
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/pi/.ssh/id_rsa
Your public key has been saved in /home/pi/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:*****ro74Dm9Zn****sfk91dbb****CLjnEOzJD**** caoj97141@gmail.com
The key's randomart image is:
+---[RSA 3072]----+
| |
| |
| E |
| = o o|
| S o .+|
| .* .B|
| . +* o .*=|
| +.=Xo=oo*|
| =%@*o+=B|
+----[SHA256]-----+执行命令后会提示输入两次密码(该密码是你push文件的时候要输入的密码,而不是github管理者的密码),当然也不可以不输入密码,直接回车跳过。这样设置之后,git push时就不需要输入密码,直接提交到git仓库。
命令执行完成后,生成秘钥文件(公钥和私钥):
~/.ssh/id_rsa.pub
和~/.ssh/id_rsa
上传公钥到服务器
通过命令将公钥上传到服务器,可以使用如下命令:
cd ~/.ssh && scp id_rsa.pub pi@raspberrypi:/home/pi
服务器修改ssh配置
先在服务器创建
~/.ssh/authorized_keys
,然后将本地PC的公钥写进入。1
2
3
4
5
6
7
8
9
10# 创建文件
mkdir /home/pi/.ssh
touch /home/pi/.ssh/authorized_keys
# 公钥写入
cd /home/pi/.ssh
cat /home/pi/id_rsa.pub >> authorized_keys
# 修改文件权限
chmod 600 authorized_keys最后修改ssh的配置文件:
/etc/ssh/sshd_config
,涉及到的选项有:1
2
3# 公钥登录许可
PubkeyAuthentication yes公钥登录
修改完ssh服务的配置文件后,重启ssh服务,接着本地PC通过公钥登录服务器
1
2
3
4
5# 重启ssh服务 方式1
systemctl restart ssh
# # 重启ssh服务 方式2
service ssh restart
本地PC通过ssh client公钥认证登录:ssh pi@raspberrypi
,此时会直接登录,无需密码。
登录成功提示:
1 | eiSouthBoy@eiSouthBoy-NMH-WCX9:~$ ssh pi@raspberrypi |
管理多个Git仓库
同时拥有Github和Gitee两个账户下的仓库需要管理,如何通过ssh管理?
在PC上分别为Gihub和Gitee创建ssh key,然后编写ssh config文件
1 | # 为Github创建ssh key |
编写ssh config文件(vim ~/.ssh/config),若没有该文件就创建它(touch ~/.ssh/config)。
1 | Host github.com |