作者归档:CD

解决Chromebook连接WIFI时DHCP Lookup failure

现象

使用某古老型号Chromebook连接WIFI,出现DHCP Lookup failure,开关wifi,重启Chromebook,均无法连接成功。

原因

不清楚。但是有人说是因为32位Chromebook的问题。

解决

更换Chromebook,换成64位的,长痛不如短痛。不过,还有别的办法:

打开想连接的wifi,输入密码,一直连接,此时自定义(关闭Configure IP address automatically)Chromebook的IP地址就行了,IP段是想连WIFI所在IP段。

甲骨文Oracle Cloud免费VPS Ubuntu 18.04/20.04 系统防火墙(UFW和iptables)的正确配置方法

之前写过一篇文章,记录如何配置甲骨文的CentOS 7 系统防火墙(firewalld和iptables)。但是改成Ubuntu系统后,启用UFW防火墙后,发现重启系统后,ufw会变成未激活状态(inavtive),设置的iptables也恢复成了默认状态。下面介绍一下大佬们总结的几种解决办法。

一 甲骨文控制台开放端口

不管哪种办法,先在甲骨文网页控制台开放端口是基本操作。这里复制一下之前的内容。

登陆Oracle Cloud网页后台,进行设置

进入“实例”,点击“实例信息”下的“虚拟云网络”右侧类似“VirtualCloudNetwork-2019****-****”的按钮并进入;

在“(根)区间中的子网”下,如果存在多个类似“公共子网 pbOp:***-**-1 ”的项目列表,就随便点进去一个

在“安全列表”下,点击并进入“Default Security List for VirtualCloudNetwork-2019****-****”。

编辑“入站规则”下“目的地端口范围”为22那条规则,或者参照这条规则新建也可以。
将“目的地端口范围”下的“22”改为“22,80,443”,然后“保存更改”即可。 系统会自动根据添加的IP生成新的两条规则。

注意:每个端口或范围间隔需要英文逗号;如果需要增加UDP端口,就在“IP 协议 ”下选择“UDP”。

二 大佬们的几种方法

2.1 彻底禁用防火墙

简单粗暴,能用就行。不太推荐。

2.1.1 直接删除iptables规则

sudo rm -rf /etc/iptables && reboot

2.1.2 开放所有端口

sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -F
sudo apt-get purge netfilter-persistent
reboot

2.2 使用iptables开放端口

这个大佬使用iptalbes开放了必要的端口,可以用。

sudo iptables -I INPUT -s 0.0.0.0/0 -p tcp --dport 8888 -j ACCEPT 
sudo iptables -I INPUT -s 0.0.0.0/0 -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -s 0.0.0.0/0 -p tcp --dport 443 -j ACCEPT 
sudo iptables-save
sudo apt-get update
sudo apt-get install iptables-persistent -y
sudo netfilter-persistent save
sudo netfilter-persistent reload

三 如何正确使用UFW

首先理解UFW只是iptables的配置工具,所以想用UFW就不要把iptables删除或禁用,放着不管就好了。但问题是,就如开头所说,重启会使配置失效。下面来说一下正确使用UFW的流程。

3.1 安装相关软件包

sudo apt-get install iptables-persistent netfilter-persistent ufw

3.2 修改UFW启动配置文件

sudo vi /lib/systemd/system/ufw.service

增加一行“After=netfilter-persistent.service”到[Unit]段最后,改成这个样子:

[Unit]
Description=Uncomplicated firewall
Documentation=man:ufw(8)
DefaultDependencies=no
Before=network.target
After=netfilter-persistent.service

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/lib/ufw/ufw-init start quiet
ExecStop=/lib/ufw/ufw-init stop

[Install]
WantedBy=multi-user.target

重启系统。

3.3 正常配置UFW防火墙

按常规方式开放22,80,443端口即可。

sudo ufw reset

sudo ufw default deny incoming
sudo ufw default allow outgoing

sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https

sudo ufw enable

这样应该就可以了。

Online 独服IPv6失联的几种解决办法

上一篇文章记录了为Online独服开启额外IPv6的过程,几乎与此同时发现了一个问题,额外添加的IPv6总是在数小时(具体不详)后失联,查看路由又没有问题,但ping6是不通的。系统默认开启的IPv6是没有问题的。网络上抱怨Online IPv6不稳定的帖子很多,有建议使用Dibbler开启IPv6的,但是这种方法已不被官方推荐。

IPv6失联或者失效,总之就是不通,原因不详。以下方法仅供尝试,不一定有效:

1 修改内核参数

早在2015年有一篇文章描述了类似的情况,分析就不赘述了,记录下操作的过程。

sudo vi /etc/sysctl.conf

添加如下两行:

net.ipv6.conf.all.forwarding=1
net.ipv6.conf.eth0.accept_ra=2

保存生效:

sudo sysctl -p

可惜的是,虽然看上去分析和处理都很有道理,但是实测后仍然会失联。

2 开启防火墙端口

Online官方教程有个提示:

You will need to allow in your firewall 546/UDP Incoming & 547/UDP Outgoing.

DHCPv6需要开放相应端口才能正常工作。

在Ubuntu下使用UFW防火墙的话,一般是允许出站,禁止进站,比如这样的默认设置:

sudo ufw default deny incoming
sudo ufw default allow outgoing

则运行如下命令:

sudo ufw allow 546/udp
sudo ufw allow 547/udp

看上去很有道理,但是观察后发现这种方法貌似也无效。

3 修改dhclient.service运行参数

有篇不起眼的文章提到,为dhclient.service添加ExecStartPost参数。

在上篇文章编写dhclient服务时:

sudo vi /etc/systemd/system/dhclient.service

添加两行参数,按如下修改:

[Unit]
Description=dhclient for sending DUID IPv6
Wants=network.target
Before=network.target

[Service]
Type=forking
ExecStart=/sbin/dhclient -cf /etc/dhcp/dhclient6.conf -6 -P -v enp1s0
ExecStartPost=/bin/sleep 5
ExecStartPost=/usr/sbin/netplan apply

[Install]
WantedBy=multi-user.target

观察一天,暂时有效,还需继续观察。

Online 独服 Ubuntu 18.04 关闭默认IPV6并额外配置静态IPV6

更新

29191222

qbittorrent在201912更新的4.2.1版本中,在“设置”中添加了“高级”选项卡,可以自定义“网络接口”和“绑定可选的IPv6地址”,解决了问题场景的“新申请配置的ipv6并没有替代默认开通的ipv6”的问题。

20191213

如果参照如下方式配置成功,但出现IPv6失联或失效的情况,请参考这篇文章

问题场景

2019年2月8日起,Online新开通的独服默认开启了IPV6。使用Ubuntu 18.04通过IPV6刷PT,因为这个作业系统可以使用最新版的qbittorrent软体。但是由于qbittorrent有限速缺陷,有一天发现这个IPV6被标记了。于是申请一个新的IPV6,通过目前网络上现有的教程,可以配置成功新的IPV6。问题来了,新申请配置的ipv6并没有替代默认开通的ipv6,而是两者共存。qbittorrent仍然使用系统默认开通的IPV6。

解决思路

官网教程说配置新的IPV6,需要开启SLAAC,否则服务器无法识别默认路由(If disabled, a server will not be able to learn its IPv6 default route)。但是实际上,目前,不管在网页控制台中是否启用“ACTIVATE IPV6 SLAAC”,Online 后台都已经默认开启了SLAAC,并通过路由通告Router Advertisement(RA)配置一个128位的IPV6。

经过多次尝试,解决思路是获取默认路由,申请新IP,配置新IP和路由,具体步骤:

  • 获取默认开启的IPV6路由,实际上只要获取IPV6网关地址即可;
  • 申请新的IPV6地址,先申请/48段,再继续划分为一个/56,并记录/56 IPV6的DUID,用/48的也行;
  • 配置dhclient、dhclient-netplan服务,内容完全照搬大佬的教程
  • 配置netplan:关闭RA,自定义IPV6地址和网关。

操作过程

获取网卡和IPV6路由

系统安装好后,通过以下命令查看IPV6路由,类似如下:

ip -6 route show
2001:1234:5678:1234::/64 dev enp1s0 proto ra metric 100 pref medium

fe80::/64 dev enp1s0 proto kernel metric 256 pref medium

default via fe80::1234:5678:1234:5678 dev enp1s0 proto ra metric 100 mtu 1500 pref medium

获取网卡名称:enp1s0;获得IPV6网关:fe80::1234:5678:1234:5678

申请新的IPV6地址

登录网页控制界面,申请/48段IPV6地址,然后再获取/56段地址,并记录其DUID。比如:

2001:1234:2345:500::/5612:34:56:78:90:ab:cd:ef:12:34

获取IPV6地址:2001:1234:2345:500::/56,在后续使用时,不存在空格;获取DUID:12:34:56:78:90:ab:cd:ef:12:34。

配置dhclient服务

编写dhclient配置文件

sudo vi /etc/dhcp/dhclient6.conf

内容如下:

interface "enp1s0" {
  send dhcp6.client-id 12:34:56:78:90:ab:cd:ef:12:34;
  request;
}

将enp1s0和12:34:56:78:90:ab:cd:ef:12:34改为自己获取的网卡名称和DUID。

编写dhclient服务

sudo vi /etc/systemd/system/dhclient.service

内容为:

[Unit]
Description=dhclient for sending DUID IPv6
Wants=network.target
Before=network.target

[Service]
Type=forking
ExecStart=/sbin/dhclient -cf /etc/dhcp/dhclient6.conf -6 -P -v enp1s0

[Install]
WantedBy=multi-user.target

将enp1s0替换为自己的网卡名称

设置开机启动:

sudo systemctl enable dhclient.service

编写dhclient-netplan服务

sudo vi /etc/systemd/system/dhclient-netplan.service

内容如下:

[Unit]
Description=redo netplan apply after dhclient
Wants=dhclient.service
After=dhclient.service
Before=network.target

[Service]
Type=oneshot
ExecStart=/usr/sbin/netplan apply

[Install]
WantedBy=dhclient.service

设置开机启动:

sudo systemctl enable dhclient-netplan.service

修改netplan配置文件

自定义ipv6地址、网关,并关闭路由通告(RA)。

sudo vi /etc/netplan/01-netcfg.yaml

修改后,最终样式如下:

# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0:
      dhcp4: yes
      accept-ra: no
      dhcp6: no
      addresses:
      - 2001:1234:2345:500::/56
      gateway6: fe80::1234:5678:1234:5678

将2001:1234:2345:500::/56修改为获取的IPV6地址;将fe80::1234:5678:1234:5678修改为获取的IPV6网关;accept-ra: no的作用是不接受RA通告的IPV6,也就是不获得默认的/128位的IPV6。

重启系统,此时应该就可以了。

在Chromebook上使用SSH 密钥登录VPS

方法如下:

生成SSH 密钥对

下载并使用Windosw版的 PuTTYgen生成RSA格式的密钥对。

转换私钥(private key)

导入ppk格式的私钥,在PuTTYgen的菜单栏选择Conversions,选择Export OpenSSH key 或者Export OpenSSH key(force new format)。获得pem格式的私钥,文件名随意。

注:两种格式的pem密钥区别在这里。两种都可以选。想新一点就第二种。

上传公钥(public key)到VPS

教程很多,不细说了。

使用Secure Shell 连接VPS

打开Chromebook上的SSH工具Secure Shell App,填入用户名,ip地址和端口,点击Identity:后面的Import…,选择刚才转换好的PEM格式的私钥,无需导入公钥(public key)。登录就可以了。

如果想删除私钥,方法是:选中要删除的私钥,同时按“搜索键+backspace”。

在Oracle Cloud免费VPS CentOS 7 系统上开启SELinux和防火墙(firewalld和iptables)情况下安装Web服务器Caddy

参考:

https://src.fedoraproject.org/rpms/caddy/blob/master/f/caddy.spec
https://github.com/caddyserver/caddy/tree/master/dist/init/linux-systemd

本文的亮点在于开启SELinux、防火墙(Firewalld和iptables)情况下,配置caddy。 本文不限于Oracle Cloud云服务,同样适用于其他类似的情况下。

按照以上教程,默认路径为:

  • /usr/local/bin/caddy #caddy程序所在目录
  • /etc/caddy/Caddyfile #caddy配置文件所作目录
  • /etc/ssl/caddy #ssl证书所在目录
  • /var/www/ #网页所在目录

建立www-data用户

caddy服务默认使用www-data用户运行,因此需要建立该用户。教程中为建立用户组为33,但Oracle CentOS 7系统中GID 33被tape占用:

grep '33' /etc/group

使用GID 36建立www-data用户

sudo groupadd -g 36 www-data
sudo useradd \
  -g www-data --no-user-group \
  --home-dir /var/www --no-create-home \
  --shell /usr/sbin/nologin \
  --system --uid 36 www-data

下载并安装caddy

sudo mkdir ~/caddy && cd ~/caddy
sudo wget https://github.com/caddyserver/caddy/releases/download/v1.0.3/caddy_v1.0.3_linux_amd64.tar.gz
sudo tar xvf caddy_v1.0.3_linux_amd64.tar.gz
sudo cp caddy /usr/local/bin

sudo chown root:root /usr/local/bin/caddy

sudo chmod 755 /usr/local/bin/caddy

使caddy能监听443,80端口

sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/caddy

安装systemd服务

sudo cp init/linux-systemd/caddy.service /etc/systemd/system/

sudo chown root:root /etc/systemd/system/caddy.service

sudo chmod 644 /etc/systemd/system/caddy.service

修改servicen内容

sudo vi /etc/systemd/system/caddy.service

需要修改为以下三行:

  1. ExecStart=/usr/local/bin/caddy -quic -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp
  2. ReadWriteDirectories=/etc/ssl/caddy
  3. AmbientCapabilities=CAP_NET_BIND_SERVICE

说明:

第一行,加入-quic,使caddy开启QUIC协议;

第二行,默认为ReadWritePaths=/etc/ssl/caddy,此时启动caddy服务,会出现如下错误:[ERROR] Making new certificate manager: could not save user: mkdir /etc/ssl/caddy/acme: read-only file system。

第三行,注释掉AmbientCapabilities=CAP_NET_BIND_SERVICE前的#,不用注释应该页没问题。因前面已经setcap过了。

建立caddy配置文件和ssl相关文件夹

sudo mkdir /etc/caddy
sudo touch /etc/caddy/Caddyfile
sudo chown -R www-data:www-data /etc/caddy
sudo chmod 644 /etc/caddy/Caddyfile
sudo mkdir /etc/ssl/caddy
sudo chown www-data:www-data /etc/ssl/caddy
sudo chown -R root:www-data /etc/ssl/caddy
sudo chmod 0770 /etc/ssl/caddy

修改VPS系统内SELinux和防火墙相关设置

将caddy定义为httpd服务

sudo semanage fcontext -a -t httpd_exec_t /usr/local/bin/caddy
sudo restorecon /usr/local/bin/caddy

设置caddy配置文件和ssl相关文件夹SELinux权限

sudo semanage fcontext -a -t httpd_config_t /etc/caddy
sudo semanage fcontext -a -t httpd_config_t /etc/caddy/Caddyfile
sudo semanage fcontext -a -t httpd_sys_rw_content_t /etc/ssl/caddy
sudo restorecon -r /etc/caddy
sudo restorecon -r /etc/ssl/caddy

开启http和https服务,即开启80和443端口,默认为tcp

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https

允许ACME进行连接以获取证书

sudo setsebool -P httpd_can_network_connect 1

HTTP challenge 端口的SELinux权限

sudo semanage port -a -t http_port_t -p tcp 5033

开启QUIC,需开放udp端口

sudo semanage port --add --type http_port_t --proto udp 80
sudo semanage port --add --type http_port_t --proto udp 443

QUIC-firewalld设置

sudo firewall-cmd --zone=public --add-port=80/udp --permanent
sudo firewall-cmd --zone=public --add-port=443/udp --permanent

保存设置,重启防火墙,以使配置生效

sudo firewall-cmd --reload

在Oracle Cloud后台网页开放端口

进入“实例”,点击“实例信息”下的“虚拟云网络”右侧类似“VirtualCloudNetwork-2019****-****”的按钮并进入;

在“(根)区间中的子网”下,如果存在多个类似“公共子网 pbOp:***-**-1 ”的项目列表,就随便点进去一个

在“安全列表”下,点击并进入“Default Security List for VirtualCloudNetwork-2019****-****”。

编辑“入站规则”下“目的地端口范围”为22那条规则,或者参照这条规则新建也可以。
将“目的地端口范围”下的“22”改为“22,80,443,5033”,然后“保存更改”即可。 系统会自动根据添加的IP生成新的三条规则。

注意:每个端口或范围间隔需要英文逗号。

开启QUIC,需要开放80和443的UDP端口,参照刚才设置的80和433端口新建规则即可,注意在“IP 协议 ”下选择“UDP”。

web站点文件相关设置

建立web站点文件夹

sudo mkdir /var/www
sudo chown -R www-data:www-data /var/www
sudo chmod 555 /var/www
sudo mkdir -p /var/www/example.com

sudo chown -R www-data:www-data /var/www/example.com

sudo chmod -R 555 /var/www/example.com

设置网站文件夹SELinux权限

sudo restorecon -r /var/www

建立web测试页

sudo vi /var/www/example.com/index.html

写入如下内容

<h1>Hello world!</h1>

测试web页

修改Caddyfile,添加站点

sudo vi /etc/caddy/Caddyfile

添加如下内容:

example.com {
     root /var/www/example.com
}

启动caddy服务

sudo systemctl daemon-reload
sudo systemctl start caddy.service
systemctl status caddy

访问example.com,看是否能见到网站页面

如能成功访问,设置开机启动

sudo systemctl enable caddy.service

完毕。

Oracle Cloud免费VPS CentOS 7 系统防火墙(firewalld和iptables)的正确配置方法

不少人不会配置Oracle的防火墙,导致无法访问80或443端口。本文记录为Oracle Cloud的VPS CentOS 7系统正确配置防火墙的步骤,理论上适用于其他系统,如Debian等。

VPS系统的SELinux为开启状态

sestatus

Firewalld为开启状态

sudo firewall-cmd --state

Iptables为开启状态,查看iptables规则

sudo iptables -L -n

一些人的做法是彻底停用防火墙(firewalld),并清除iptables规则,如:

sudo systemctl stop firewalld

sudo systemctl disable firewalld
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -F

但是端口仍然可能不能正常访问,同时我们都知道这肯定不是正确的解决方式。那正确的做法是什么呢?

正确的配置方法为:

  1. 登陆VPS的CentOS 7 系统,配置防火墙(firewalld),开放相关服务和端口;
  2. 登陆Oracle Cloud网页后台,进入实例,在“安全列表”中,修改“入站规则”;
  3. 不要手动修改iptables。

例,要建立一个小网站,需要开放80和443端口,步骤为:

第一步,登陆VPS的CentOS 7系统,修改防火墙设置,增加http和https服务,即开启80和443端口

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https

重启防火墙以生效

sudo firewall-cmd --reload

第二步,登陆Oracle Cloud网页后台,进行设置

进入“实例”,点击“实例信息”下的“虚拟云网络”右侧类似“VirtualCloudNetwork-2019****-****”的按钮并进入;

在“(根)区间中的子网”下,如果存在多个类似“公共子网 pbOp:***-**-1 ”的项目列表,就随便点进去一个

在“安全列表”下,点击并进入“Default Security List for VirtualCloudNetwork-2019****-****”。

编辑“入站规则”下“目的地端口范围”为22那条规则,或者参照这条规则新建也可以。
将“目的地端口范围”下的“22”改为“22,80,443”,然后“保存更改”即可。 系统会自动根据添加的IP生成新的两条规则。

注意:每个端口或范围间隔需要英文逗号;如果需要增加UDP端口,就在“IP 协议 ”下选择“UDP”。

至此设置完毕,赶紧访问下你的网页吧。

为Oracle Cloud申请的免费VPS CentOS 7 系统升级内核并开启官方原版BBR加速

20200609 elrepo 5.7.1可以正常启动

经测试elrepo 5.7.1可以正常启动。在正文过程的基础上,更新方法简述:

sudo yum --enablerepo="elrepo-kernel" makecache fast
sudo yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
sudo yum --enablerepo=elrepo-kernel install kernel-ml
sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/efi/EFI/centos/grub.cfg
sudo grub2-set-default 0
sudo reboot

20200304 5.5.7内核无法启动

最近发现了问题:尝试从5.3.1内核更新至5.5.7内核时,系统无法启动,VNC提示如下:fb0: bochs-drmdrmfb frame buffer device。建议:1.暂时不要通过elrepo源更新内核;2.以后在升级任何内核时都不要删除旧版本内核。对于甲骨文,只要保留旧版本内核,可以通过VNC连接选择旧版内核启动系统来挽救。

以下为正文

Oracle 云申请的CentOS 7 系统,自带3.1内核,且为EFI引导,并默认开启SELinux,升级内核开启BBR易出现错误导致无法开机。开启原版BBR需要4.9以上内核,以下内容记录升级内核并开启BBR的过程。

更新系统

sudo yum update -y

查看内核

uname -r

3.10.0-1062.1.1.el7.x86_64

改SELinux为permissive模式

查看SELinux状态,默认开启:

sestatus

将enforcing改为permissive,如下:

sudo vi /etc/sysconfig/selinux

SELINUX=permissive

重启vps:

sudo reboot

开启elrepo源

sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

sudo yum install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm

查看可安装内核

yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

安装内核

sudo yum --enablerepo=elrepo-kernel install kernel-ml

查看新内核是否安装成功

rpm -qa | grep kernel

更新引导

这是一个容易出错的地方,以前碰到的启动配置文件,大多是在/boot/grub2/grub.cfg,而该系统为EFI引导,配置文件位置不同。

sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

列出系统开机的所有启动项

sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/efi/EFI/centos/grub.cfg

设置默认启动项

sudo grub2-set-default 0

重启VPS

sudo reboot

查看内核

uname -r
5.3.1-1.el7.elrepo.x86_64

开启bbr(直接抄袭大佬的全部内容)

执行 lsmod | grep bbr,如果结果中没有 tcp_bbr 的话就先执行:

sudo modprobe tcp_bbr
echo "tcp_bbr" | sudo tee --append /etc/modules-load.d/modules.conf

执行

echo "net.core.default_qdisc=fq" | sudo tee --append /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee --append /etc/sysctl.conf

保存生效

sudo sysctl -p

执行

sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control

如果结果都有 bbr,则证明你的内核已开启 BBR。

执行 lsmod | grep bbr,看到有 tcp_bbr 模块即说明 BBR 已启动。

重新开启SELinux

检查有无SELinux相关错误:

sudo cat /var/log/messages | grep "SELinux is preventing"

确保无错误后,再启用SELinux Enforcing 模式

sudo vi /etc/sysconfig/selinux

将permissive改回enforcing,如下修改:

SELINUX=enforcing

重启VPS

sudo reboot

解决Oracle Cloud免费服务申请的VPS无法登陆问题

现象描述

使用puttygen(0.71)生成RSA格式的公钥和私钥,粘贴在“创建计算实例”的“添加SSH密钥”下的“粘贴SSH密钥”中,申请免费的CentOS 7系统的VPS。

当使用命令行登陆VPS时,如:

ssh opc@12.34.56.78 -i .\key.ppk

出现 Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

改用putty在SSH-AUTh中选择私钥,登陆VPS,则提示:

No supported authentication methods available(server sent: publickey,gssapi-keyex,gssapi-with-mic)

原因

经多次尝试发现,Oracle的CentOS7 sshd_config 模板中未定义SSH的Protocol,因此登陆时默认使用Protocol 1模式,但命令行和putty默认使用Protocol 2,因此导致无法登陆。

解决方法

使用putty登陆,在putty的设置中,依次点击“Connection”-“SSH”-“Auth”,选中“Attempt TIS or CryptoCard auth (SSH-1)”,登陆即可。

(可选)登陆后可以修改SSH协议为2.

sudo vi /etc/ssh/sshd_config

添加一行

Protocol 2

重启SSH服务即可。

为caddy启用tls 1.3

更新日志

20190918

在20190305的更新中,caddy默认支持了tls 1.3,因此以下内容已过时从官网或者github下载使用即可。

nginx启用tls1.3已多时,这里记录下在caddy中启用tls1.3的过程。

安装依赖:

sudo yum -y install docker
service docker start

下载源码:

cd ~
git clone https://github.com/cloudflare/tls-tris.git
go get github.com/mholt/caddy
go get github.com/caddyserver/builds

编译go,使之支持tls1.3:

cd tls-tris; cp _dev/utils/pre-commit .git/hooks/
sudo make -f _dev/Makefile build-all

编译成功,运行如下命令确认:

GOROOT=”/home/$USER/tls-tris/_dev/GOROOT/linux_amd64/” go version
-> go version go1.11.1 linux/amd64

下载并应用caddy补丁:

cd $GOPATH/src/github.com/mholt/caddy
wget https://www.hnrk.io/md/caddy.patch
patch -p1 < caddy.patch

编译caddy:

cd $GOPATH/src/github.com/mholt/caddy/caddy
GOROOT=”/home/$USER/tls-tris/_dev/GOROOT/linux_amd64/” go run build.go

编译成功的caddy在当前目录下。直接替换原caddy后运行即已支持tls 1.3。