由于Google云服务对新注册用户提供为期一年的300美金赠金,就想着在GCP上玩一下。但是因为是新手,对服务器的一些操作不是很熟悉,在GCP上新创建的Compute Engine无法在本地使用Xshell远程登录,通过对比网上的一些资料,最后成功使用Xshell通过密钥形式登录了服务器,特此记录一下,以防之后创建新机器的时候忘记。
-
前提
拥有外币信用卡,并且成功注册了GCP获得赠金,创建了一台虚拟机实例。
-
实际操作
1. 先通过浏览器登录服务器,顺手把服务器的密码改了(后面可以使用账号密码登录)。
# 切换到root用户 sudo su root # 设置root用户密码 passwd # 设置默认登录用户密码(例:用户lauasuka) passwd lauasuka 复制代码
此时的用户lauasuka会无法使用sudo命令,修改sudoers文件。
# 当前用户为root,切换目录到root的home下 cd ~ # 编辑修改/etc/sudoers文件 visudo 复制代码
修改sshd的配置文件,启用密钥认证登录,同时关闭密码认证,并重启服务
vim /etc/ssh/ssh_config ## 修改下面参数的值 # PubkeyAuthentication yes #启用PublicKey认证 # PasswordAuthentication no #不适用密码认证登录 systemctl restart sshd #重启sshd服务 复制代码
2. 密钥生成
首先切换回普通用户,使用ssh-keygen生成密钥对(密钥密码可选),此时会在当前用户的家目录生成.ssh目录,并且目录下会生成公钥 id_rsa.pub 和私钥文件 id_rsa。
将公钥追加到authorized_keys文件
# 当前用户为普通用户 sudo cat id_rsa.pub >> {当前用户家目录}/.ssh/authorized_keys # 更改authorized_keys文件权限为拥有者可读写 sudo chmod 600 {当前用户家目录}/.ssh/authorized_keys 复制代码
3. 使用Xshell密钥连接
将当前用户私钥文件 id_rsa 下载到本地。 打开Xshell,点击 工具 > 用户密钥管理者,导入刚刚下载的id_rsa私钥
之后就可以像账号密码登录一样登录服务器了,新增连接的时候 用户身份验证
-
最后
其实操作步骤可以反过来,密钥对由本地Xshell生成,然后将本地生成的公钥上传到服务器并追加到authorized_keys文件中