聚會時間公告: 因應COSCUP 2011, Kalug 8月份休會一次

十二月 24, 2011

小惡魔AppleBOY
AppleBOY
小惡魔 - 電腦技術 - 工作筆記 - AppleBOY is about »

tag cloud

» Geany 編輯器搭配 sshfs 參數注意事項

geany_vectorized_free

Geany 是一套我覺得在 Linux 作業系統底下蠻簡易及輕量的程式編輯器,之前撰寫一篇 Linux 程式開發編輯器 Geany + Fuse 遠端掛載 簡易介紹如何使用 Fuse,這次發現一個小問題,就是掛載要儲存檔案時候出現底下錯誤訊息

Error renaming temporary file: Operation not permitted.
The file on disk may now be truncated!

此錯誤訊息發生在用 Fuse 掛載遠端系統所造成,原先掛載指令如下

sshfs appleboy@xxxx.com.tw:/home/appleboy /home/git/CN
-p 22 -o reconnect,sshfs_sync -o uid=1000,gid=1000

我們只需要另外加上 workaround=rename flag 及可以解決此問題

sshfs appleboy@www.cn.ee.ccu.edu.tw:/home/appleboy /home/git/CN
-p 22 -o reconnect,sshfs_sync -o uid=1000,gid=1000
-o workaround=rename

測試環境為 Ubuntu 10.10.

Related View

七月 21, 2011

小惡魔AppleBOY
AppleBOY
小惡魔 - 電腦技術 - 工作筆記 - AppleBOY is about »

tag cloud

» Linux 程式開發編輯器 Geany + Fuse 遠端掛載

Geny
自己買的筆電灌上了 Ubuntu 作業系統,Linux 系統好處多多,指令自己也熟悉,想架什麼站都可以,但是最主要還是要找一套程式開發編輯器,網路上看了大部份文章,我決定用 Geany 這套免費的編輯器,在 Windows XP 底下我則是使用 PSPad 搭配內建的 FTP 功能遠端編輯寫程式,但是 Geany 並沒有支援 FTP 功能,可以詳細看到官方網站 Q&A,官方建議搭配 FuseLUFS,這樣並不只是 Geany 可以使用,其他 Application 也可以任意使用了。

在介紹 Fuse 之前可以先參考過去寫的一篇教學: [SSHFS] 好用的 SSH Filesystem fusefs-sshfs in FreeBSD or Linux,裡面分享了 FreeBSD 跟 Linux 底下的 tarball 安裝方式,當然現階段 Ubuntu 安裝就很容易了,透過 Apt 管理的方式安裝:

$ apt-cache search sshfs
sshfs - filesystem client based on SSH File Transfer Protocol
sshfs-dbg - filesystem client based on SSH File Transfer Protocol (with debbuging symbols)
sbackup-plugins-fuse - Simple Backup Suite FUSE plugins
$ apt-get install sshfs

安裝完成,透過底下指令把遠端資料夾 mount 過來吧。

$ mkdir /home/appleboy/tmp
$ sshfs -p 22 appleboy@XXX.XXX.XXX.XXX:/home/appleboy /home/appleboy/tmp

Geany 真的蠻好用的喔,推薦給大家,還有其他 screenshot 可以參考這裡

Related View

一月 5, 2011
» SSH 遠端登入免密碼 by RSA

當凍仁還是專題生時,Shawn 學長曾提過 ssh 可用金鑰連線,這樣就不怕會被鎖在家門外,那時有用個登入三次失敗帳號會上鎖的機制,最近凍仁才知道這用到了大學資訊安全課堂上提過的公開金鑰加密(RSA 演算法),也就是先將公開金鑰(public key)給對方,之後的通訊將透過此 public key 加密,之後再用私鑰(private key)解密。

密碼學與網路安全一書簡報。

建立 RSA 金鑰。
jonny@client:~$ ssh-keygen -t rsa
# PubkeyAuthentication: RSA key for SSH2
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jonny/.ssh/id_rsa):
Created directory '/home/jonny/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/jonny/.ssh/id_rsa.
Your public key has been saved in /home/jonny/.ssh/id_rsa.pub.
The key fingerprint is:
37:e7:80:1a:77:fe:85:ea:12:7a:ef:bf:b3:ca:11:b8 jonny@debian
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| |
| o |
| . S * . |
| +.= * . |
| ..E.o o . |
| . o. +.. |
| . =Bo=+ |
+-----------------+
# id_rsa.pub = public key.
# id_rsa = private key.

新增 public key 至遠端 Server。
jonny@client:~$ cat .ssh/id_rsa.pub | ssh \
Jonny@Server "cat - >> .ssh/authorized_keys"
# Jonny = user name.
# Server = Domain name or IP address.

切記 id_rsa 要妥善保管,不然會被闖空門。

接下來可以用 rsync 之類的小程式寫一堆 Shell scripts 來異地備份,凍仁是都會先將 Server 的 $PS1 跟 Client 來點顏色區別,才不會發生關錯機的烏龍事件。

2011-01-05

近來遇到個問題,同時也是很容易忽略的問題,那就是權限

  目錄 $HOME/.ssh/ 必須為 drwx------
  檔案 $HOME/.ssh/authorized_keys 必須為 -rw-r--r--

不然在 putty 上會有「Server refused our key」拒絕金鑰的錯誤訊息,至於要不要 restorecon 就不確定了。

預設權限(umask)的部份 CentOS 5 為 0002,而 Debian 6 則是 0022,看出來了嘛?這在手動建立的情形下會差很多!看了下表以後就會知道為什麼 Debian 可以無痛免 key 登入了!

  Type  CentOS  Debian
  Directory    drwxrwxr-x    drwxr-xr-x  
  File  -rw-rw-r--  -rw-r--r--

相關連結:
公開鑰匙密碼學與 RSA 簡報 by 密碼學與網路安全
Debian Reference - 6.9.3. Connecting without remote passwords
Debian 參考手冊 | 9.5.3 以少許密碼連線 – RSA
Putty 的 Server refused our key | richliu`s blog
檔案預設權限:umask | 鳥哥的私房菜

三月 11, 2010

小惡魔AppleBOY
AppleBOY
小惡魔 - 電腦技術 - 工作筆記 - AppleBOY is about »

tag cloud

» [FreeBSD] DenyHosts 設定在 hosts.allow 注意事項

denyhosts
DenyHosts 是一套用 Python 跟 shell script 寫出來的 open source base on Linux or FreeBSD (/var/log/secure on Redhat, /var/log/auth.log on Mandrake, FreeBSD, etc…),用來阻擋 SSH Server 被攻擊,之前寫一篇 FreeBSD 安裝設定教學,有一點沒有注意到,就是打開 /etc/hosts.allow,注意要把 ALL : ALL : allow 放到最後一行,跟 iptables 設定原理是一樣的,會從第一條規則開始比對,如果比對成功,下面的 rule 就會略過比對了,參考英文說明:

Start by allowing everything (this prevents the rest of the file from working, so remove it when you need protection). The rules here work on a “First match wins” basis.

/etc/hosts.deny 已經被 FreeBSD 棄用,所以必須把 allow 跟 deny 的 rule 都寫到 hosts.allow 檔案裡面才是正確的

#
# DenyHosts file: /etc/hosts.deniedssh
sshd : /etc/hosts.deniedssh : deny
sshd : ALL : allow

# Start by allowing everything (this prevents the rest of the file
# from working, so remove it when you need protection).
# The rules here work on a "First match wins" basis.
# move bottom by appleboy 2010.03.11
ALL : ALL : allow

Related View

四月 2, 2009
» [tips] ssh login without password using ssh-copy-id script

應該早點知道有這種懶人script存在的
而且還是裝完openssh就有的
(.ssh/authorized_keys,這是啥難記的檔名 @@)

現在只要

ssh-copy-id -i id_dsa.pub username@host

做完就好了 orz

十二月 31, 2007

Yuren's Info Area
yurinfore
is about »

tag cloud

» SSH VPN

這幾天都在研究 SSH (Secure Shell) 神奇的妙用。其中一個就是 ssh 在 4.3 以後已經內建支援 VPN (Virtual Private Network),只要配合多數 Linux 都支援的 iptables 就可以使用了。我幹嘛用 SSH VPN 勒?如果有筆記型電腦的人一定常在外面無線上網,但是沒有加密的無線網路可是很危險的阿,想像一下每個有無線網路的咖啡館都有個佈告欄,上面公告著每個人使用無線網路的帳號密碼,包括網站、BBS、電子郵件的。而使用 SSH VPN 可以將自己的訊息先用 SSH 加密後,再透過遠端的伺服器傳送,雖然這樣會拖慢速度,不過使用起來還是安心點囉。

注意,以下都必須使用 root 權限。

以下面這個例子來說,我在研究室有台 SSH Server S (假設 IP 是 140.130.120.110),而我的筆記型電腦 Laptop C (IP 不固定)。首先要有 tun 這個 Tunnel 驅動程式。請在 S, C 中都下這個指令:

modprobe tun
接下來所有的動作都在筆記型電腦 C 上執行。如果要開機的時候自動載入驅動程式,請將 tun 加入 /etc/modules 裏面。接下來要使用 SSH VPN 要有以下資訊是在每個咖啡館都不一樣的:
  1. 你所處無線網路的網路與網路遮罩 (Network/netmask) - $NETWORK
  2. 你所處無線網路的閘道器 (Gateway) - $GW
現在我們要用 ssh 開啟兩端 tun0 介面的 VPN 網路:
ssh -w 0:0 -f 140.130.120.110 "ifconfig tun0 10.0.2.1 netmask 255.255.255.252 pointopoint 10.0.2.2 ;echo 1 > /proc/sys/net/ipv4/ip_forward ;/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE ;route add -net $NETWORK gw 10.0.2.2 dev tun0"
下面介紹一下參數

-w 0:0
開啟 tunnel,第一個是本機 C 的 tun 編號,第二個是伺服器 S 的 tun 編號。如果改成 1:2 就代表 C 用的 VPN 介面是 tun1,S 用的 VPN 介面是 tun2。

-f "command"
登入 ssh 以後在遠端主機 S 要執行的命令。

ifconfig tun0 10.0.2.1 netmask 255.255.255.252 pointopoint 10.0.2.2
設定伺服器 S tun0 介面的 IP 位址、網路遮罩以及點對點另一端 C 的 IP 位址

echo 1 > /proc/sys/net/ipv4/ip_forward
開啟 IP 轉送的功能

/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
設定 NAT。注意這只是簡單的設定,為了安全起見請 K 一下網路上的 iptables 資料,很充足。

route add -net $NETWORK gw 10.0.2.2 dev tun0
加入路由資訊,只要傳送給 C 所處網路的資訊都由 tun0 介面的 10.0.2.2 去傳送

上面那個指令就可以把伺服器 S 設定完成,接下來要設定筆記型電腦 C。請執行以下指令:
ifconfig tun0 10.0.2.2 netmask 255.255.255.252 pointopoint 10.0.2.1
(設定 C 的 tun0 介面)

route add -net 140.130.120.0/24 gw 10.0.2.1 dev tun0
(加入路由資訊)

route add 140.130.120.110 gw $GW
(這蠻重要的,傳送給 140.130.120.110 的封包經由 $GW 傳送)

route add default gw 10.0.2.1 tun0
(將預設 gateway 改成 tun0 的 10.0.2.1)

route del default gw $GW
(刪除原本的 gateway)
這樣就可以傳送了。你可以上 My IP 來確定一下自己的 IP。

十二月 30, 2007

Yuren's Info Area
yurinfore
is about »

tag cloud

» sshfs

sshfs (SSH Filesystem) 這個使用方式更妙。可以透過 ssh 的方式掛載特定的目錄。比如說研究室有個伺服器專門放些分享檔案。原本是用 Samba 的方式,當然只要有開 ssh 就可以使用 sshfs,比起 Samba 更方便。安裝 sshfs 後,執行以下指令:

sshfs -omodules=iconv,from_code=CP950 yurenju@140.130.120.111:/samba/ samba/


馬上就可以掛載原本 samba 的目錄,並且透過 CP950 的編碼轉換成 UTF-8。而我們研究室的 檔案伺服器原本只開放給內網使用,不過只要配和 SSH VPN 加上 sshfs,不論到哪個地方,都可以輕易的存取檔案伺服器的資源啦!

十二月 29, 2007

Yuren's Info Area
yurinfore
is about »

tag cloud

» ssh vpn 之一發不可收拾

今天在咖啡館心血來潮,想把 ssh vpn tunnel 搞定,無奈不得要領常常搞到 ssh 斷線。後來回到研究室後,終於是把 SSH VPN 搞定了。心滿意足的感到自己在無線網路中終於不受監控,想說來寫的簡單的 VPN GUI 好了。沒事幹嘛把 SSH VPN 搞得這麼複雜…。

那怎麼拿 interface list 勒?回想一下 GNOME 有哪些地方拿到網路列表…想起了無線網路偵測的 nm-applet。後來想說應該看 network-admin,接著發現這是 gnome-system-tools 的工具,再追下去,原來是 call liboobs 這個函式庫。

追到這裡,一天就過了…,浪費了一天都沒幹到正經事,!*&#^*&@!^%$…。

A Feedjack powered Planet
A Django site.