1 ssh
ssh一般用于连接服务器,可以使用密码认证与密钥认证的方式。
1.1 密码认证
直接使用ssh即可:
ssh username@xxx.xxx.xxx.xxx
username为用户名,后面为公网ip. 若需要使用特定端口登录,加上p参数,比如使用12345端口:
ssh -p 12345 username@xxx.xxx.xxx.xxx
1.2 密钥认证
密钥认证需要先生成密钥,然后把公钥使用scp上传到服务器,接着修改服务器的ssh配置文件。
1.2.1 生成密钥
ssh-keygen -t rsa -b 4096 -C "email" -f /xxx/id_rsa
t表示加密算法,b指定位数,C表示注释,识别这个密钥,一般用邮箱即可。f表示生成的私钥文件位置(需要加上文件名),公钥会放在同一文件夹下。
1.2.2 上传公钥
使用scp上传公钥到服务器,注意是公钥,ssh-keygen会生成一个公钥与私钥,pub结尾的文件就是公钥,默认叫id_rsa.pub .
scp /xxxx/id_rsa.pub username@xxx.xxx.xxx.xxx:/root/
这里就直接放到服务器上的/root下。
1.2.3 修改ssh配置文件
先使用ssh密码认证的方式登录服务器,然后修改/etc/ssh/sshd_config:
cd /etc/ssh
cp sshd_config sshd_config.bak
vim sshd_config
找到PubKeyAuthentication这一行,修改如下:
如果需要修改端口的,搜索Port,直接修改:
接着重启sshd服务:
systemctl restart sshd
1.2.4 测试连接
ssh -i /xxx/id_rsa -p port username@xxx.xxx.xxx.xxx
其中i后为私钥的位置,p参数如果修改了默认的端口(22)则需要加上自定义端口。
如果在windows上生成的私钥,可能会有如下问题:
这里提示私钥的权限是755,也就是其他用户可读,需要修改为600:
chmod 600 /xxx/id_rsa
如果用的是wsl可能会修改失败,需要加上wsl的配置,修改/etc/wsl.conf(如果没有就新建)
vim /etc/wsl.conf
输入:
[automount]
enabled = true
options = "metadata,umask=22,fmask=11"
mountFsTab = false
退出wsl重启,然后再修改权限,应该就没问题了。
2 scp
scp是secure copy的缩写,一般用于从服务器下载文件或上传文件到服务器,与ssh类似,可以使用密码认证或密钥认证或指定端口。
2.1 上传文件(夹)到服务器
scp localFile username@xxx.xxx.xxx.xxx:/xxxx
scp -r localDir username@xxx.xxx.xxx.xxx:/xxx
上面是密码认证的方式,密钥认证请加上i参数,指定私钥位置:
scp localFile username@xxx.xxx.xxx.xxx:/xxx
scp -i /xxx/id_rsa -r localDir username@xxx.xxx.xxx.xxx:/xxxx
需要特定端口请加上P参数(注意是大写,不是ssh的小写p端口参数)
scp -i /xxx/id_rsa -P xx localFile username@xxx.xxx.xxx.xxx
2.2 从服务器下载文件(夹)
scp username@xxx.xxx.xxx.xxx:/xxx /localDir
scp -r username@xxx.xxx.xxx:/xxx /localDir
第一个是下载文件,第二个是下载文件夹,需要加上r参数。
同理,密钥认证加i参数,端口加P参数:
scp -i /xxx/id_rsa -P xx username@xxx.xxx.xxx.xxx:/xxx /localDir
scp -i /xxx/id_rsa -P xx -r username@xxx.xxx.xxx.xxx:/xxx /localDir