【ssh】ssh免密登录配置【docker】
ssh登录
1.基本用法
ssh user@hostname
user
:用户名hostname
:云服务器的IP地址或者域名
第一次登录会提示:
The authenticity of host '123.57.47.211 (123.57.47.211)' can't be established. ECDSA key fingerprint is SHA256:iy237yysfCe013/l+kpDGfEG9xxHxm0dnxnAbJTPpG8. Are you sure you want to continue connecting (yes/no/[fingerprint])?
输入yes
,然后回车即可。
这样会将该服务器的信息记录在~/.ssh/known_hosts
文件中
最后输入密码即可登录到远程服务器。
- 默认端口为22
- 如果想登录某特定端口
ssh user@hostname -p 22
2.配置别名
每次登录都需要输入云服务器的IP,一般不会记住,并且很麻烦。
可以在本地存储该IP并设置别名:
- 创建文件
~/.ssh/config
- 1.先创建
.ssh
文件夹:mkdir .ssh
- 2.进入
.ssh
文件夹创建config
文件:cd .ssh
,touch config
- 3.进入
config
文件配置别名: - 4.保存并退出:
esc
+:wq
- 1.先创建
Host myserver1HostName IP地址或域名User 用户名Host myserver2HostName IP地址或域名User 用户名
之后再使用服务器时,可以直接使用别名myserver1、myserver2:
比如:
ssh myserver1
:然后输入密码即可。
3.配置免密登录
- 1.创建密钥:
ssh-keygen
然后一直回车即可。
执行结束之后,~/.ssh/
目录下会多两个文件:
* id_rsa
:私钥
* id_rsa.pub
: 公钥
之后想免密码登录哪个服务器,就将公钥传给哪个服务器即可。
例如,想免密登录myserver服务器。则将公钥中的内容,复制到myserver中的~/.ssh/authorized_keys文件里即可:
- 1.
ssh myserver
,然后输入密码登录到云服务器中 - 2.检查有没有
.ssh
文件夹,没有的话则创建。 - 3.在
.ssh
文件夹下,创建authorized_keys
文件,将之前的id_rsa.pub
里面的内容复制到authorized_keys
文件
(可以在原先的比如gitbash的.ssh
目录下执行:cat id_rsa.pub
,然后选中公钥内容,按下ctrl+insert
键复制,然后通过shift+insert
键黏贴到云服务器下authorized_keys
文件中)
也可以使用如下命令一键添加公钥:
ssh-copy-id myserver
server
是在config
文件内配置的别名
下次需要登录云服务器就只需要:
ssh server
就能直接连上了。
4.docker内的ssh登录
- 1.登录云服务器:
配置完免密登录即可直接ssh server
- 2.创建并启动docker容器:
docker load -i docker_lesson_1_0.tar # 将镜像加载到本地
docker run -p 20000:22 --name my_docker_server -itd docker_lesson:1.0 # 创建并运行docker_lesson:1.0镜像
假设docker容器名为:my_docker_server
,进入容器内
docker attach my_docker_server
passwd # 设置root密码
- 3.云服务器的云平台控制台修改安全组配置,放行端口
20000
ssh root@xxx.xxx.xxx.xxx -p 20000 # 将xxx.xxx.xxx.xxx替换成自己租的服务器的IP地址
- 4.创建工作账户,防止直接在root环境下开发(root权限较大)
- 5.配置免密登录:
- 1.在
~/.ssh/config
中添加:
- 1.在
Host my_docker_serverHostName IP地址或域名User 用户名 Port 20000
然后再执行:
ssh-copy-id my_docer_server
这样就给云服务器里面的docker容器的指定用户也配置好了免密登录,这样只需要通过:
ssh my_docker_server
就能直接进入到docker容器内开始开发了,省事又省力。