interhost

הבלוג
הכל על שרתים, תקשורת ולינוקס

ארכיון פוסטים עם התג "לינוקס"

היתחברות לשרת לינוקס ב SSH ועיון בקבצים בעזרת תוכנה WinSCP

יום שלישי, 24 באפריל, 2012

פעמים רבות נתקלים בבעיה שרוצים לראות ויזואלית את התיקיות והקבצים בשרת לינוקס אך כאשר לא מותקן שום GUI בשרת, לא ניתן לראות אלה רק דרך שורת פקודה, שלאנשים רבים פשוט לא נוח או שהידע לא מספיק רחב בשביל להיתמצאת בשרות פקודה. לכן קיימות תוכנות רבות שמתחברות דרך SSH בפורט 22 בידיוק כמו שמתחברים בשורת פקודה, אך ההצגה של הקבצים היא ויזואלית ונוחה לשימוש.

לכן כאן נראה איך משתמשים באחת התוכניות האלה, WinSCP חינמית לחלוטין ועושה את העבודה היטב.

נתחיל:

1. נוריד את התוכנה מהלינק הבא: http://winscp.net/eng/download.php

2. פותחים את קובץ ההתקנה.

3. Next

4. Next

5. Next

6. Install

7. לאחר ההתקנה בוחרים באופציה:

 

8. ולאחר מכן Finish

9. התוכנה נפתחת בחלון כזה:

 

 

כאן יש למלא את פרטי הגישה של root או משתמש אחר בעל גישה ל SHH לשרת.

לדוגמא:

 

לבדוק שב File Protocol מסומן SFTP

והפורט הוא 22.

10. לאחר מכן לוחצים על Login

11. ואם כול הנתונים תקינים רואים את כול הקבצים והתיקיות בשרת.

בחלון דומה לזה:

 

12. זהו סיימנו, תהנו.

 

 

 

 

 

חיבור ל – Ubuntu באמצעות Remote Desktop של Windows

יום שני, 23 באפריל, 2012
דרך מאוד מהירה וידידודית לחיבור בין מערכת הפעלה Ubuntu רוב הגירסאות החדשות, באמצעות Remote Desktop שנמצא מובנה במערכת הפעלה Windows. הדרך הזו פותרת הרבה בעיות כגון: רזולוציה של מסך בגודל סביר לעבודה, והיתחברות של הרבה משתמשים בבת אחת ועוד… אז נתחיל:
1. יש להפעיל את הטרמינל על ידי לחיצה על Ctrl-Alt-T .
2. בטרמיל יש לרשום את הפקודה הבאה: sudo apt-get install xrdp
 
 
3. כרגע הותקן השרת של XRDP במחשב של Ubuntu.
4. עכשיו צריך להיכנס ל Remote Desktop ב Windows,  ניתן להיכנס דרך Start –> All Programs –> Accessories –> Remote Desktop או באמצעות הפקודה mstsc שניתן לרשום אותה ב Start -> run5. בחלון שנפתח יש לרשום את ה IP המרוחק של המחשב השני עם ה – Ubuntu.

6. לאחר מכן יש ללחוץ על Connect, בשביל להיתחבר.

7. אם הצלחתם להיתחבר לשרת המרוחק יוצג החלון שבו יש להזין שם משתמש וסיסמא של המשתמש ב Ubuntu.


8. לוחצים על ok, השרת יחשוב קצת ולאחר כמה רגעים כבר תראו את השולחן עבודה של Ubuntu.

 
9 . תהנו!

 

כלי לבדיקת תקינות רוחב פס בשרתי לינוקס

יום שבת, 27 בנובמבר, 2010

צהוריים טובים לכולם,
היום רציתי לספר לכם על כלי שימושי שבודק טוהר רוחב פס שהוקצא ע"י הספק בחוות השרתים לשרת שלנו. הכלי שנקרא iperf עובד בשיטת client-server ולכן, הבנתם נכון, צריך להתקין אותו בשני קצבות, שני שרתים.

iperf מאפשר לבדוק האם ה-bandwidth שהשרת צריך לקבל (החוצה upload או פנימה download) הוא פרטי ונקי ושאין עומס על הקו. כמובן, בכדי לאמת שאכן אנו בודקים את הפס בין השרת לחוות השרתים רצוי להפעיל את הקליינט בשרת מרוחק "בטוח" תקין. ז"א רצוי להתקין את קליינט אחד למשל באותו חוות שרתים בשרת ליד ואחד מחוץ לחוות השרתים וכך יהיה לכם אומדן להשוואה.

אם לשרת הקרוב השגיאה הינה 0.01% זה אומר שזה המאה אחוז שלכם ממנו ואתם לוקחים את נקודת היחוס. השגיאה לשרת קרוב יכולה לנבוע מהרבה סיבות, לדוגמא שגיאות בפורט (כבל רשת דפוק), דיסקים איטיים בשרת, שגיאות בזכרון, סוויטץ עמוס, חומת אש שמגינה מפלי "הצפה" (flood) – לכן אם תהיה לכם נקודת יחוס תוכלו להשוות את התוצאות של בדיקה לשרת המרוחק עם השרת המקורב ולדעת שההבדל ביניהם הוא בעצם תלוי בחוות השרתים והלאה.

במערכת הפעלה Debian ההתקנה בשרת פשוטה מאוד:

apt-get install iperf

בצד השרת המרוחק

iperf -s -u

השרת המרוחק יתפקד כ-סרבר (server), אנא ודאו שפורט UDP 5001 פנימה פתוח, זה הפורט הדיפולטיבי ש-iperf עובד איתו במצב UDP. ולמה UDP? כי UDP הוא פרוטוקול ללא בקרת שגיאות, בניגוד ל-TCP, ולכן אם יש בעיות על הקו הפאקטות של UDP יפלו ע"י הסוויטצים והנתבים בדרך. -u אומר שאנחנו עובדים בפרוטוקול UDP בשרת והפרמטר -s אומר ש-iperf רץ במצב "שרת" (server).

בצד השרת הנבדק (השרת שאת הקו שלו בודקים)

מריצים:

iperf -c <כתובת שרת מרוחק> -u -b 10M

10M- מסמל את גודל רוחב הפס שאותו רוצים לבדוק. בצורת ריצה כזו iperf בודק את ההעלאה מן השרת הנוכחי ולשרת המרוחק במהירות עשר מגהביט, בפרוטוקול UDP. (אל תשכחו לוודא שפורט 5001 UDP פתוח החוצה).
-c אומר שהכלי ירוץ במצב "לקוח" (client). והפרמטר -b מסמל שאנחנו רוצים לקבוע את מהירות קצב העברת הנתונים לשרת המארח.

לאחר מספר שניות יופיע הפלט שנראה כך:

iperf

iperf

סימנתי באדום את מה שמעניין אותנו מהפלט "Lost/Total Datagrams" מה שמצביע כמה פאקטות "נפלו" בדרת לשרת המרוחק. אם המספר גבוהה בהשוואה למספר הפאקטות שנפלו בדרך לשרת המקורב (נקודת היחוס שלנו) זה מראה על מצב חשוד. תריצו את הדיקה עוד כמה פעמים שיהיה לכם ערך גם ערך ממוצע וגם לראות שזה לא היה נקודתי. תנסו להוריד או לעלות את מהירות הבדיקה ולראות האם זה משפיע על כמות ה- dropped packets (פאקטות שנפלו).

אם הנתונים שאספנו מראים על יותר מ-1% LOSS (איבוד פאקטות) הבדל מנקודת היחוס אפשר לפנות בגב זקוף לספק התשתית ולטעון לבעיות על הקו המסופק לשרת.

בהצלחה!

טיפים נוספים ושימושיים

יום שלישי, 15 בדצמבר, 2009

החלטתי לתת כמה טיפים נוספים, כמו שהבטחתי בפעם קודמת. הפעם אתן פקודות או רצף פקודות שימושיות בלינוקס.

מצא את הקבצים שנערכו ביממה האחרונה

find . -mtime 1 -print

המערכת תציג פלט של רשימת הקבצים שנמצאים תחת התיקיה שנמצאים בה (כולל תתי-סיפריות והקבצים שלהן) אשר יש להם ערך "Last Modified" קטן או שווה לאחד, במילים אחרות כל הקבצים שבוצע בהם שינוי ביממה האחרונה.

בדיקת ביצועי דיסק בזמן אמת
בהרבה מקרים שנתקלתי ,במיוחד בשרתים וירטואלים, היו בעיות משאבים שנבעו מניצולת דיסק מקסימלית אשר יצרה צוור בקבוק במערכת וגרמה לפגיעה בביצועים. בדרך כלל במערכות שרתים וירטואליים מקצים זכרון ומעבד מבודדים פר לקוח אבל הסטורג' (הדיסקים) מהווים מקור לכל הלקוחות בשרת. כאשר כמה מכונות וירטואליות משתמשות באותו סטורג' וגם אם הוא מערך של RAID 1 (מירור) קיימת פגיעה בביצעוים שנובעים מיכולתו של הדיסק לעבד מספר I/O בו זמנית. וכאשר המערכת מחכה לI/O מהדיסק מתרחשת ירידה בביצעוים. המקרה בדרך כלל אופייני יותר לדיסקי SATA כי הם מסוגלים לטפל בהרבה פחות I/O מאשר דיסקי SAS. וזה מה שמסביר מדוע דיסקים מסוג SAS יקרים כל כך.
ישנם מספר פתרונות לבעיה, אחד מהם הוא פשוט להישתמש בדיסקים מהירים מסוג SAS או לעבוד מול סטורג' חיצוני חזק או מספר סטורג'ים ולחלק את המכונות ביניהם.
כיצד נבדוק אם השרת הוירטואלי שלנו (או כל שרת פיזי אחר) סובל מבעיות I/O?
ישנה פקודה בלינוקס (תחת כל ההפצות) שנקראית vmstat, בדרך כלל מריצים אותה עם פרמטר מספרי שמסמל את מרווחי הזמן של הדגימה:

vmstat 1

הפלט שלה נראה כך:

procs ———–memory———- —swap– —–io—- -system– —-cpu—-
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0 299920 103204 218460 1238704    0    0     0     1    1    0  7  1 92  0
 1  0 299920  99152 218460 1238668    0    0     1   692  203  396 25  1 74  0
 0  0 299920 106216 218468 1238668    0    0     0   567  219  236 15  0 85  0
 0  0 299920 106224 218468 1238668    0    0     0     0  153   70  0  0 100  0
 0  0 299920 106224 218468 1238668    0    0     0     0  133   64  0  0 100  0
 0  0 299920 106224 218468 1238668    0    0     0     0  133   70  0  0 100  0

מה שמעניין אותנו אותנו בשלב זה היא העמודה האחרונה (בחלק מההפצות היא עמודה לפני אחרונה) ששמה wa, הנתון של העמודה מתעדכן אחת לשניה (כפי שציינו בפרמטר) והוא מסמל את זמן הI/O שהמעבד חיכה לדיסק. כאשר השרת בIDLE הערך יהיה 0. בדרך כלל ערך עד 10 מורה על עבודה רגילה של השרת וזה תקין. בין 10 ל-25 אומר שהשרת עובד ולא "עומד" באוויר, חשוב לראות גם שהערך עולה ויורד חזרה, אם הוא חוזר על עצמו למשך זמן ולא יורד יכול להיות שמבוצעים כרגע גיבויים או מתבצעת העתקה כלשהי ואם לא רצוי לבדוק מה מנצל את הדיסק.
בין 25 ל-50 מראה שיש כבר עומס על הדיסקים ורצוי להתחיל לעקוב אם זה זמני או שחזור על עצמו. במידה והערכים בתחום הזה במשך זמן רב ובחזרות רבות אז מדובר בעומס ובצוור בקבוק שפוגע בביצועים ורצוי לבדוק מה הסיבא לכך. זה מצב לא תקין.
לסיכום ערכים עד 10 תקין לגמרי ואין מה לדאוג. מעבר לכך יש לעקוב.

טיפים כלליים שימושיים בלינוקס למנהל מתחיל

יום שלישי, 20 באוקטובר, 2009

הרבה מלקוחותי משכירים שרתי לינוקס מתוך ידיע שהם חזקים יותר ומסוגלים להחזיק כובד רב יותר משרתי ווינדאוס, מה גם שהקוד הפתוח אכן פתוח לכל כיס וגם למי שאין עדיין כיס משלו ומאפשר לטעום מכל עולמות המערכות בחינם ובפשטות.
אך למרות זאת לא לכולם יש את ידע הבסיסי המינימלי שיאפשר לבקר ולהתחיל להבין מה מתרחש בשרת שלהם; אני מוצא את עצמי לרוב "עושה" להם את העבודה במקום באמת ללמד ולאפשר לבצע זאת לבד ללקוח בעתיד.

לכן חשבתי לרכז כמה טיפים בסיסיים בתפעול לינוקס בפוסט זה, כמו שרובכם שמתם לב הנני חובב לינוקס דביאן מושבע (אם דביאן הייתה אשה הייתי מתחתן איתה) לכן רוב הפקודות אמורות לעבוד בכל ההפצות אך במקומות שקיים שוני אציין זאת באיקון:

debian logo

(סמל של הפקצת לינוקס דביאן, אגב אחת ההפצות הוותיקות אחרי סלאקוור)

אובכן,

  1. טיפ ראשון – כמה דיסק פנוי נשאר בשרת? הפקדוה הינה פקודה זהה בכל מערכות הליקוס וגם BSD ונרשמת כך:
    df -h
    

    הפלט שלה לדוגמא:

    Filesystem             Size   Used  Avail Use% Mounted on
    /dev/sda7              941M   424M   467M  48% /
    tmpfs                  1.1G      0   1.1G   0% /lib/init/rw
    tmpfs                  1.1G      0   1.1G   0% /dev/shm
    /dev/sda10              57G    47G   7.7G  86% /home
    /dev/sda9              748M    13M   696M   2% /tmp
    /dev/sda6              5.0G   3.5G   1.3G  74% /usr
    /dev/sda8              6.0G   4.0G   1.7G  71% /var
  2. הערך שסימנתי באדום מציין את כמות המקום הפנוי בגיגות שנשאר במחיצת /home והחלק העליון שמסומן בטורקיז אומר שנותרו 467מגה פנויים במחיצת root (המחיצה הראשית בשרת).

    כפי שאתם רואים בשרת הזה הקצאתי לסיפריית home מחיצה משלה ע"מ לאפשר מעקב והפעלת quotas (הגבלות בניצולת דיסק) עבור לקוחות אחסון אתרים, נדון על quotas במאמר נפרד.

    אם שמתם לב השתמשתי בפרמטר h-, מטרתו להציג את הנפחים בצורה "נוחה לקריאת אדם" (קיצור H הוא של Human הלוא הוא בן-אנוש באנגלית) ובמילים אחרות בגיגות ולא בבייטים.

  3. טיפ שני – חיפוש קבצים בשרת ניתן לבצע במספר דרכים במערכות לינוקס, אחת הדרכים השכיחות והלקות היא שימוש ב-locate, אופן פעולה של הכלי הינה בכך שתחילה מבצעים "אינדוקס" כללי של המערכת בעזרת פקודת updatedb, הכלי סורק את כל הקבצים בשרת ויוצר אינדקס לחיפוש מהיר עתידי שנעשה בעזרת locate, כך שבכל פעם שתרצו לחפש קובץ כלשהו לא יהיה צורך בסריקה איטית של כל הדיסק אלא סריקה בקובץ אינקדס. פעולת החיפוש הופכת למהירה ונעימה.
    אני נוהג מדי שבוע  לעדכן את ההאינדקס של locate, ניתן לעשות זאת באופן אוטומטי ע"י הוספת מטלה יומית ל-cron. מערכת דביאן מגיעה עם ההגדרה היומית בcron באופן אוטומטי, ניתן למצוא אותה בנתיב הבא:
    debian logo

    /etc/cron.daily/mlocate

    לפעמים אני רוצה לחפש בסיפריה שעודכנה ברגעים האחרונים (או אחרי העדכון היומי של updatedb) ואיני רוצה להריץ updatedb ולחקות עד לאינדוקס של כלל המערכת כיוון שמדובר תיקיית עבודה ידועה אך פקודה הליסט (ls) לא עוזרת כיוון שהקובץ המיוחל עלול להופיע תחת אחת מתתי התיקיות ואיני רוצה כמובן לבזבז זמן ולהיכנס תיקיה תיקיה ולחפש אחריו, אובכן כאן ניתן להשתמש בפקודת find שאיטית לחיפושים גדולים אך מהירה לחיפושים בתיקיות מוגדרות, אופן השימוש הוא פשוט מאוד:

    find /etc/ | grep pass
    

    /etc/pam.d/passwd
    /etc/pam.d/common-password
    /etc/proftpd/ftpd.passwd_old
    /etc/passwd
    /etc/passwd-
    /etc/security/opasswd
    /etc/exim4/passwd.client

השתמשתי בפקודת find על תיקיית /etc אשר מציגה את כל הקבצים בצורה רקורסיבית (גם בתתי תיקיות) לאחר מכן העברתי את הפלט של find בעזרת "פייפ" (pipe) שהוא המקל האנכי | לפקודת grep שהיא מחזירה את
השורות שיש בהן את המילה 'pass'. בצורה זו החיפוש נעשה באופן מהיר יחסית כיוון ש-find לא צריכה להתאמץ אלא רק להדפיס את כל הקבצים וgrep הוא כלי מהיר ונהדר שעוד נדון בו בהזדמנות.

3. מיון והצגת ערכים ייחודיים בלבד מצאתי לנכון לגעת בטכניקה הזו כיוון שהרבה פעמים אני מוצא את עצמי משתמש באוסף הכלים שעמודים לראשותי בלינוקס כדי למיין פלט של קובץ או של פקודה ולפעמים גם להצגיד רק
ערכים יחודיים (unique). מקרה שימושי ונפוץ מאוד הוא כאשר יש עומס חריג בתעבורה על השרת אשר יכול לנבוא עקב תכנות לקוי של אחד האתרים, התקפה זדונית או פריצה לשרת. במקרה כזה הייתי רוצה לדעת כמה
חיבורים יש לשרת מבחוץ ומאיזה כתובות ויתרה מכך, כמה מכל כתובת. הפקודה המלאה לכך היא:

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

הפלט שלה לדוגמא:

1 212.199.127.82
1 220.181.13.x
1 24.72.103.x
1 66.249.65.x
1 67.218.116.x
1 67.218.116.x
1 69.43.149.x
1 81.218.234.x
1 81.218.234.x
1 84.95.245.x
1 Address
1 servers)
2 127.0.0.1
2 38.98.19.x
2 62.219.140.x
2 66.249.71.x
3 212.235.12.x
3 63.111.24.x
9 212.68.132.x
24 95.86.74.x
29 79.176.188.x
31 61.177.194.x
157 87.70.110.x

כפי שאתם רואים פלט מויין מערך החיבורים הקטן ביותר (חיבור אחד) עד לערך החיבורים הגדול ביותר. ניתן לראות שיש כרגע 157 חיבורים לשרת מכתובת 87.80.110. (מחקתי את האוקטטה האחרונה בכל הכתובות כדי
לשמור על הפרטיות של הגולשים).  אם רוצים לקבל פלט של חיבורים פעילים בלבד (אלו שנמצאים במצב ESTABLISHED) צריך להוסיף שדרוג קטן לשרשור הפקודות כך שהפקודה הסופית נראית כך:

netstat -ntu | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

במקרה שרוצים לאתר התקפת SYN (syn attack) נשתמש בפקודה הראשונה כיוון שבהתקפה כזאת החיבורים לא נשארים פעילים אלה מתחלפים כל פעם בחדשים ובכך מעמיסים על הרשת והשרת בעצם.

השתמשנו כאן בפקודת לינוקס ידועה (גם bsd אבל עם פרמטים שונים) בשם netstat אשר מציגה את החיבורים לשרת ואת הפורטים והסוקטים שהשרת מאזין בהם. כמו כן השתמשנו בפקודה מיוחדת שנקראית uniq זו
פקודה שמציגה רק את הערכים הייחודיים בפלט. חשוב בטרם שמוש ב-uniq תמיד למיין תחילה את הפלט בעזרת הפקודה sort , ללא sort פקודת uniq לא תעבוד טוב (אם בכלל).