ssh learning

本文最后更新于:2022年11月20日 下午

SSH登录

ssh user@hostname

  • user:用户名

  • hostname:IP地址或域名

之后电脑会将该服务器的信息记录在~/.ssh/known_hosts文件中

登录某一特定端口:

ssh user@hostname -p 22

配置文件

防止每次登录ssh都需要输入一遍user@hostname,ip不容易记忆

创建文件~/.ssh/config

然后在文件中输入:

1
2
3
4
5
6
7
Host myserver1
HostName IP地址或域名
User 用户名

Host myserver2
HostName IP地址或域名
User 用户名

之后再使用服务器时,可以直接使用别名myserver1、myserver2

注意这是使用ssh登录的操作,与使用ssh进行远程git仓库的认证相区分开。

密钥登录

防止每次登录都需要输入密码

创建密钥:

ssh-keygen
然后一直回车即可。

执行结束后,~/.ssh/目录下会多两个文件:

id_rsa:私钥
id_rsa.pub:公钥

将公钥中的内容,复制到服务器中的~/.ssh/authorized_keys文件里即可

一键添加公钥:

ssh-copy-id -i "filepath" myserver

配置git&github

传输文件时,需要使用ssh去与远程git服务器相认证。

同样需要生成密钥和公钥

下面两种算法比较常见

1
ssh-keygen -t ed25519 -C "your_email@example.com"
1
ssh-keygen -t rsa -C "<您的邮箱>"

之后,需要在本地~/.ssh/config配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 账号A
Host blogOasis
HostName github,com
IdentityFile ~/.ssh/id_rsa_blog
PreferredAuthentications publickey
IdentityAgent none
IdentitiesOnly yes

# 账号B
Host main-voice
HostName github.com
IdentityFile ~/.ssh/id_rsa_main_voice
PreferredAuthentications publickey
IdentityAgent none
IdentitiesOnly yes
  • HostName:填写托管平台服务地址;
  • Host:填写别名,方便命令行使用;
  • IdentityFile:填写证书位置,即使用本地哪个私钥与服务器对接;

在日常推拉代码工作时,获取代码库的 ssh 克隆地址后,因为本地有多个账号,可以手动选择使用哪个账号操作。

git@blogOasis:username/repoName

git@main-voice:username/repoName

可使用以下命令查看当前使用的密钥对应的账号

1
ssh -t git@blogOasis

传输文件

基本用法:

scp source destination

如果传输到远程,注意加上meserver:(冒号)

路径问题:

scp -r ~/tmp myserver:/home/acs/

服务器后加/,代表绝对路径

如果不加/,代表相对于~/的相对路径

最后的/,看情况加,有时候报错是一个文件夹,无法传输,把/去掉即可

终端tips

复制内容:开头点一下,按住shift,结尾点一下即可

Ref

https://help.aliyun.com/document_detail/322237.html?userCode=okjhlpr5

https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent


ssh learning
https://blogoasis.github.io/post/a5271c15.html
作者
phInTJ
发布于
2022年11月18日
许可协议