Debian / Ubuntu Linux 某個套件需要用到 testing / sid 的套件,但是其它都還是想維持在 stable,要怎麼做呢?
- 註1:這個情況剛好發生在 Debian SSH 套件 stable 是有 Security issue (Security Bug Tracker),testing 套件是沒問題的。
- 註2:
- CVE-2016-6515 - 由此處可見 jessie (security), jessie 1:6.7p1-5+deb8u3 vulnerable
- Information on source package openssh
Debian Linux 特定套件使用新版本(Testing)的作法
由此安全性因素,所以要將 openssh 由 jessie (stable) 升級到 stretch (testing / sid),要怎麼做呢?(簡單說就是如何在 stable 環境安裝 testing 環境的套件)
參考文件
- linux - How can I run Debian stable but install some packages from testing?
- Apt Preferences - Debian Wiki
目前 jessie (stable) 的套件
- dpkg -l | grep openssh
ii openssh-server 1:6.7p1-5+deb8u3 amd64 secure shell (SSH) server, for secure access from remote machines
在 stable 環境安裝 testing openssh 套件
在 stable 環境安裝 testing openssh 套件 步驟如下:
- sudo vim /etc/apt/apt.conf.d/99defaultrelease # 此檔案不存在,直接新增
APT::Default-Release "stable";
- sudo vim /etc/apt/sources.list.d/testing.list # 新增檔案之後方便移除
deb http://ftp.tw.debian.org/debian/ testing main contrib non-free deb-src http://ftp.tw.debian.org/debian/ testing main contrib non-free deb http://security.debian.org/ testing/updates main contrib non-free
- sudo apt-get update
- apt-cache search ssh
- sudo apt-get install -t testing openssh-server # 安裝 testing 版本,到此就升級完成
- dpkg -l | grep openssh # 確認
ii openssh-client 1:7.3p1-1 amd64 secure shell (SSH) client, for secure access to remote machines ii openssh-server 1:7.3p1-1 amd64 secure shell (SSH) server, for secure access from remote machines
想要將 testing 環境的套件改回 stable 套件的步驟
參考文件
要灌回舊版,回到 stable 版本,先查看舊版的資料
- sudo apt-cache showpkg openssh-server
Provides: 1:7.3p1-1 - ssh-server # testing 1:6.7p1-5+deb8u3 - ssh-server # jessie 1:6.0p1-4+deb7u6 - ssh-server # wheezy
- sudo apt-get install openssh-server=1:6.7p1-5+deb8u3 # 會有衝突,補齊下面套件版本
- sudo apt install openssh-server=1:6.7p1-5+deb8u3 openssh-client=1:6.7p1-5+deb8u3 openssh-sftp-server=1:6.7p1-5+deb8u3
- sudo rm /etc/apt/apt.conf.d/99defaultrelease /etc/apt/sources.list.d/testing.list# 還原
- sudo apt-get update # 到此就已經還原完成,但是要注意設定檔是否會造成舊版無法啟動
- vim /etc/ssh/sshd_config # 注意 7.x 與 6.7 的版本設定不同,/var/log/syslog 要看看有沒有問題
PermitRootLogin prohibit-password # 建議直接改成 PermitRootLogin no - 在遠端的話,請確認套件設定沒問題在重新啟動 SSH
PermitRootLogin 的參數差異
- PermitRootLogin 的參數用意:禁止 root 使用密碼登入(預設是允許的)
- PermitRootLogin without-password:禁止 root 使用公鑰 / 私鑰登入
- PermitRootLogin prohibit-password:同上,新版可以使用這個名字:prohibit-password,但是恢復舊版會不相容,造成設定檔錯誤,ssh 無法啟動
- PermitRootLogin no:禁止 root 使用 SSH 登入