\." Man page generated from reStructuredText \." by the Docutils 0.22.3 manpage writer. . . .nr rst2man-indent-level 0 . .de1 rstReportMargin \ \n[an-margin] level \n[rst2man-indent-level] level margin: \n[rst2man-indent\n[rst2man-indent-level]] - \n[rst2man-indent0] \n[rst2man-indent1] \n[rst2man-indent2] .. .de1 INDENT \." .rstReportMargin pre: . RS \ . nr rst2man-indent\n[rst2man-indent-level] \n[an-margin] . nr rst2man-indent-level +1 \." .rstReportMargin post: .. .de UNINDENT . RE \." indent \n[an-margin] \." old: \n[rst2man-indent\n[rst2man-indent-level]] .nr rst2man-indent-level -1 \." new: \n[rst2man-indent\n[rst2man-indent-level]] .in \n[rst2man-indent\n[rst2man-indent-level]]u .. .TH "SSHTUNNEL" "1" "Dec 24, 2025" "0.4.0" "sshtunnel" .SH "نام (NAME)" python\-sshtunnel \- ایجاد تونل‌های SSH از طریق درگاه ریموت .sp [image: CircleCI] [image] \% [image: AppVeyor] [image] \% [image: Documentation Status] [image] \% [image: coveralls] [image] \% [image: version] [image] \% .sp [image: pyversions] [image] [image: license] [image] \% .sp Bنویسنده P: Pahaz \% .sp Bمخزن P: \% .sp الهام‌گرفته از \%، که روی Windows کار نمی‌کند. .sp همچنین ببینید: \% .SH "پیش‌نیازها (REQUIREMENTS)" .INDENT 0.0 .IP \(bu 2 paramiko \% .UNINDENT .sp بسته sshtunnel \% در PyPI موجود است، بنابراین برای نصب آن در محیط خود کافی است دستور زیر را اجرا کنید: .INDENT 0.0 .INDENT 3.5 .sp .EX pip install sshtunnel .EE .UNINDENT .UNINDENT .sp یا .INDENT 0.0 .INDENT 3.5 .sp .EX easy_install sshtunnel .EE .UNINDENT .UNINDENT .sp یا .INDENT 0.0 .INDENT 3.5 .sp .EX conda install \-c conda\-forge sshtunnel .EE .UNINDENT .UNINDENT .sp برای نصب از کد منبع، مخزن \% را کلون کرده و اجرا کنید: .INDENT 0.0 .INDENT 3.5 .sp .EX python setup.py install .EE .UNINDENT .UNINDENT .SH "آزمایش بسته (TESTING THE PACKAGE)" .sp به منظور اجرای آزمون‌ها ابتدا به tox \% نیاز دارید، سپس اجرا کنید: .INDENT 0.0 .INDENT 3.5 .sp .EX python setup.py test .EE .UNINDENT .UNINDENT .sp یکی از سناریوهای متداول که Bsshtunnel P در آن مفید است در شکل زیر به تصویر کشیده شده است. ممکن است کاربر نیاز داشته باشد به پورتی از یک سرور ریموت (مثلاً ۸۰۸۰) متصل شود، در حالی که فقط پورت SSH (معمولاً پورت ۲۲) در دسترس است. .INDENT 0.0 .INDENT 3.5 .sp .EX \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- | \-\-\-\-\-\-\-\-\-\-\-\-\-+ | +\-\-\-\-\-\-\-\-\-\-+ LOCAL | | | REMOTE | :22 SSH CLIENT | <== SSH ========> | SERVER | :8080 web service \-\-\-\-\-\-\-\-\-\-\-\-\-+ | +\-\-\-\-\-\-\-\-\-\-+ | FIREWALL (only port 22 is open) \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- .EE .UNINDENT .UNINDENT .sp Bشکل ۱ P: نحوه اتصال به یک سرویس مسدودشده توسط فایروال از طریق تونل SSH. .sp در صورت مجاز بودن توسط سرور SSH، همچنین امکان دسترسی به یک سرور خصوصی (از دیدگاه BREMOTE SERVER P) که مستقیماً از بیرون (دیدگاه BLOCAL CLIENT P) قابل مشاهده نیست وجود دارد. .INDENT 0.0 .INDENT 3.5 .sp .EX \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- | \-\-\-\-\-\-\-\-\-\-\-\-\-+ | +\-\-\-\-\-\-\-\-\-\-+ +\-\-\-\-\-\-\-\-\- LOCAL | | | REMOTE | | PRIVATE CLIENT | <== SSH ========> | SERVER | <== local ==> | SERVER \-\-\-\-\-\-\-\-\-\-\-\-\-+ | +\-\-\-\-\-\-\-\-\-\-+ +\-\-\-\-\-\-\-\-\- | FIREWALL (only port 443 is open) \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- .EE .UNINDENT .UNINDENT .sp Bشکل ۲ P: نحوه اتصال به BPRIVATE SERVER P از طریق تونل SSH. .sp رابط برنامه‌نویسی (API) هم امکان مقداردهی اولیه تونل و راه‌اندازی آن را فراهم می‌کند و هم استفاده از یک زمینه (context) Bwith P، که خود وظیفه راه‌اندازی Bو متوقف کردن P تونل را بر عهده می‌گیرد: .SH "مثال ۱ (EXAMPLE 1)" .sp کد متناظر با Bشکل ۱ P در بالا به شرح زیر است، با فرض اینکه آدرس سرور ریموت Bpahaz.urfuclub.ru P باشد، از احراز هویت با گذرواژه استفاده شود و پورت محلی به طور تصادفی تخصیص یابد. .INDENT 0.0 .INDENT 3.5 .sp .EX from sshtunnel import SSHTunnelForwarder server = SSHTunnelForwarder( \(aqalfa.8iq.dev\(aq, ssh_username=\(dqpahaz\(dq, ssh_password=\(dqsecret\(dq, remote_bind_address=(\(aq127.0.0.1\(aq, 8080) ) server.start() print(server.local_bind_port) # show assigned local port # work with \(gaSECRET SERVICE\(ga through \(gaserver.local_bind_port\(ga. server.stop() .EE .UNINDENT .UNINDENT .SH "مثال ۲ (EXAMPLE 2)" .sp مثالی از فورواردینگ پورت به یک سرور خصوصی که مستقیماً در دسترس نیست، با فرض احراز هویت با کلید اختصاصی رمزگذاری‌شده (pkey)، در حالی که سرویس SSH سرور ریموت روی پورت ۴۴۳ شنود می‌کند و آن پورت در فایروال باز است ( Bشکل ۲ P): .INDENT 0.0 .INDENT 3.5 .sp .EX import paramiko import sshtunnel with sshtunnel.open_tunnel( (REMOTE_SERVER_IP, 443), ssh_username=\(dq\(dq, ssh_pkey=\(dq/var/ssh/rsa_key\(dq, ssh_private_key_password=\(dqsecret\(dq, remote_bind_address=(PRIVATE_SERVER_IP, 22), local_bind_address=(\(aq0.0.0.0\(aq, 10022) ) as tunnel: client = paramiko.SSHClient() client.load_system_host_keys() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(\(aq127.0.0.1\(aq, 10022) # do some operations with client session client.close() print(\(aqFINISH!\(aq) .EE .UNINDENT .UNINDENT .SH "مثال ۳ (EXAMPLE 3)" .sp مثالی از فورواردینگ پورت برای پورت محلی MySQL در Vagrant: .INDENT 0.0 .INDENT 3.5 .sp .EX from sshtunnel import open_tunnel from time import sleep with open_tunnel( (\(aqlocalhost\(aq, 2222), ssh_username=\(dqvagrant\(dq, ssh_password=\(dqvagrant\(dq, remote_bind_address=(\(aq127.0.0.1\(aq, 3306) ) as server: print(server.local_bind_port) while True: # press Ctrl\-C for stopping sleep(1) print(\(aqFINISH!\(aq) .EE .UNINDENT .UNINDENT .sp یا به سادگی با استفاده از خط فرمان (CLI): .INDENT 0.0 .INDENT 3.5 .sp .EX (bash)$ python \-m sshtunnel \-U vagrant \-P vagrant \-L :3306 \-R 127.0.0.1:3306 \-p 2222 localhost .EE .UNINDENT .UNINDENT .SH "مثال ۴ (EXAMPLE 4)" .sp باز کردن یک نشست SSH با پرش از روی دو تونل. انتقال SSH و تونل‌ها به صورت دیمن درمی‌آیند، که در هنگام بسته شدن منتظر پایان یافتن اتصالات نمی‌مانند. .INDENT 0.0 .INDENT 3.5 .sp .EX import sshtunnel from paramiko import SSHClient with sshtunnel.open_tunnel( ssh_address_or_host=(\(aqGW1_ip\(aq, 20022), remote_bind_address=(\(aqGW2_ip\(aq, 22), ) as tunnel1: print(\(aqConnection to tunnel1 (GW1_ip:GW1_port) OK...\(aq) with sshtunnel.open_tunnel( ssh_address_or_host=(\(aqlocalhost\(aq, tunnel1.local_bind_port), remote_bind_address=(\(aqtarget_ip\(aq, 22), ssh_username=\(aqGW2_user\(aq, ssh_password=\(aqGW2_pwd\(aq, ) as tunnel2: print(\(aqConnection to tunnel2 (GW2_ip:GW2_port) OK...\(aq) with SSHClient() as ssh: ssh.connect(\(aqlocalhost\(aq, port=tunnel2.local_bind_port, username=\(aqtarget_user\(aq, password=\(aqtarget_pwd\(aq, ) ssh.exec_command(...) .EE .UNINDENT .UNINDENT .INDENT 0.0 .INDENT 3.5 .sp .EX $ sshtunnel \-\-help usage: sshtunnel [\-h] [\-U SSH_USERNAME] [\-p SSH_PORT] [\-P SSH_PASSWORD] \-R IP:PORT [IP:PORT ...] [\-L [IP:PORT [IP:PORT ...]]] [\-k SSH_HOST_KEY] [\-K KEY_FILE] [\-S KEY_PASSWORD] [\-t] [\-v] [\-V] [\-x IP:PORT] [\-c SSH_CONFIG_FILE] [\-z] [\-n] [\-d [FOLDER [FOLDER ...]]] ssh_address Pure python ssh tunnel utils Version 0.4.0 positional arguments: ssh_address SSH server IP address (GW for SSH tunnels) set with \(dq\-\- ssh_address\(dq if immediately after \-R or \-L optional arguments: \-h, \-\-help show this help message and exit \-U SSH_USERNAME, \-\-username SSH_USERNAME SSH server account username \-p SSH_PORT, \-\-server_port SSH_PORT SSH server TCP port (default: 22) \-P SSH_PASSWORD, \-\-password SSH_PASSWORD SSH server account password \-R IP:PORT [IP:PORT ...], \-\-remote_bind_address IP:PORT [IP:PORT ...] Remote bind address sequence: ip_1:port_1 ip_2:port_2 ... ip_n:port_n Equivalent to ssh \-Lxxxx:IP_ADDRESS:PORT If port is omitted, defaults to 22. Example: \-R 10.10.10.10: 10.10.10.10:5900 \-L [IP:PORT [IP:PORT ...]], \-\-local_bind_address [IP:PORT [IP:PORT ...]] Local bind address sequence: ip_1:port_1 ip_2:port_2 ... ip_n:port_n Elements may also be valid UNIX socket domains: /tmp/foo.sock /tmp/bar.sock ... /tmp/baz.sock Equivalent to ssh \-LPORT:xxxxxxxxx:xxxx, being the local IP address optional. By default it will listen in all interfaces (0.0.0.0) and choose a random port. Example: \-L :40000 \-k SSH_HOST_KEY, \-\-ssh_host_key SSH_HOST_KEY Gateway\(aqs host key \-K KEY_FILE, \-\-private_key_file KEY_FILE RSA/ECDSA private key file \-S KEY_PASSWORD, \-\-private_key_password KEY_PASSWORD RSA/ECDSA private key password \-t, \-\-threaded Allow concurrent connections to each tunnel \-v, \-\-verbose Increase output verbosity (default: ERROR) \-V, \-\-version Show version number and quit \-x IP:PORT, \-\-proxy IP:PORT IP and port of SSH proxy to destination \-c SSH_CONFIG_FILE, \-\-config SSH_CONFIG_FILE SSH configuration file, defaults to ~/.ssh/config \-z, \-\-compress Request server for compression over SSH transport \-n, \-\-noagent Disable looking for keys from an SSH agent \-d [FOLDER [FOLDER ...]], \-\-host_pkey_directories [FOLDER [FOLDER ...]] List of directories where SSH pkeys (in the format \(gaid_*\(ga) may be found .EE .UNINDENT .UNINDENT .sp Isshtunnel P \- ایجاد و برقراری تونل‌های SSH از طریق یک درگاه ریموت. .sp Bsshtunnel P با باز کردن یک اتصال فورواردینگ پورت SSH در پس‌زمینه با استفاده از ریسمان‌ها کار می‌کند. .sp اتصال(ها) هنگام فراخوانی صریح متد BSSHTunnelForwarder.stop() P یا استفاده از آن به عنوان یک زمینه (context) بسته می‌شوند. .INDENT 0.0 .TP .B sshtunnel.SSH_TIMEOUT = 0.1 مهلت زمانی (به ثانیه) برای سوکت انتقال ( Bsocket.settimeout P) .UNINDENT .INDENT 0.0 .TP .B sshtunnel.TUNNEL_TIMEOUT = 10.0 مهلت زمانی (به ثانیه) برای برقراری اتصال تونل (مهلت زمانی open_channel) .UNINDENT .INDENT 0.0 .TP .B sshtunnel.DEFAULT_LOGLEVEL = 40 سطح پیش‌فرض لاگ‌گیری در صورت عدم ارائه شیء ثبت‌کننده (ERROR) .UNINDENT .INDENT 0.0 .TP .B sshtunnel.DEFAULT_SSH_DIRECTORY = \(aq~/.ssh\(aq مسیر فایل پیکربندی اختیاری ssh .UNINDENT .INDENT 0.0 .TP .B sshtunnel.check_address(address) بررسی صحیح بودن ساختار آدرس .INDENT 7.0 .TP .B آرگومان‌ها: .INDENT 7.0 .TP .B address (tuple): یک زوج ( Bstr P, Bint P) که به ترتیب نشان‌دهنده آدرس IP و پورت هستند .sp Bنکته: P .INDENT 7.0 .INDENT 3.5 در صورت پشتیبانی پلتفرم، هنگام کار با سوکت‌های دامنه یونیکس، Baddress P محلی می‌تواند به صورت Bstr P نیز باشد .UNINDENT .UNINDENT .UNINDENT .TP .B خطاهای ایجادشده (Raises): .INDENT 7.0 .TP .B ValueError: هنگامی که آدرس ساختار نادرستی داشته باشد پرتاب می‌شود .UNINDENT .TP .B مثال: .sp .EX >>> check_address((\(aq127.0.0.1\(aq, 22)) .EE .UNINDENT .UNINDENT .INDENT 0.0 .TP .B sshtunnel.check_addresses(address_list, is_remote=False) بررسی صحیح بودن ساختار آدرس‌ها .INDENT 7.0 .TP .B آرگومان‌ها: .INDENT 7.0 .TP .B address_list (list[tuple]): توالی‌ای از زوج‌های ( Bstr P, Bint P) که هر یک به ترتیب نشان‌دهنده آدرس IP و پورت هستند .sp Bنکته: P .INDENT 7.0 .INDENT 3.5 در صورت پشتیبانی پلتفرم، یک یا چند عنصر از فهرست می‌توانند از نوع Bstr P باشند که یک سوکت دامنه یونیکس معتبر را نشان می‌دهد .UNINDENT .UNINDENT .TP .B is_remote (boolean): اینکه آیا فهرست آدرس‌ها مربوط به ریموت است یا خیر .UNINDENT .TP .B خطاهای ایجادشده (Raises): .INDENT 7.0 .TP .B AssertionError: هنگامی که Baddress_list P حاوی یک عنصر نامعتبر باشد پرتاب می‌شود .TP .B ValueError: هنگامی که هر یک از آدرس‌های درون فهرست ساختار نادرستی داشته باشند پرتاب می‌شود .UNINDENT .UNINDENT .sp مثال: .sp .EX >>> check_addresses([(\(aq127.0.0.1\(aq, 22), (\(aq127.0.0.1\(aq, 2222)]) .EE .UNINDENT .INDENT 0.0 .TP .B sshtunnel.create_logger(logger=None, loglevel=None, capture_warnings=True, add_paramiko_handler=True) اتصال یا ایجاد یک ثبت‌کننده رویداد (logger) جدید و افزودن کنترل‌کننده کنسول در صورت عدم وجود .sp آرگومان‌ها: .INDENT 7.0 .INDENT 3.5 .INDENT 0.0 .TP .B logger (Optional[logging.Logger]): نمونه‌ای از Blogging.Logger P \%؛ در صورت خالی بودن این آرگومان، یک نمونه جدید ساخته می‌شود .TP .B loglevel (Optional[str or int]): سطح Blogging.Logger P \%، به صورت رشته (مانند BERROR P) یا مقدار عددی (10 == BDEBUG P) .sp Bنکته: P .INDENT 7.0 .INDENT 3.5 مقدار 1 == BTRACE P حالت ردیابی (Tracing) را فعال می‌کند .UNINDENT .UNINDENT .TP .B capture_warnings (boolean): فعال/غیرفعال‌سازی ثبت رویدادهای ماژول warnings در کنترل‌کننده‌های Blogger P .sp پیش‌فرض: True .sp Bنکته: P .INDENT 7.0 .INDENT 3.5 در پایتون ۲.۶ نادیده گرفته می‌شود .UNINDENT .UNINDENT .TP .B add_paramiko_handler (boolean): افزودن یا عدم افزودن یک کنترل‌کننده کنسول برای لاگر Bparamiko.transport P در صورت نبود کنترل‌کننده .sp پیش‌فرض: True .UNINDENT .UNINDENT .UNINDENT .INDENT 7.0 .TP .B مقدار بازگشتی: Blogging.Logger P \% .UNINDENT .UNINDENT .INDENT 0.0 .TP .B exception sshtunnel.BaseSSHTunnelForwarderError(*args, **kwargs) استثنای پرتاب‌شده هنگام خطاهای BSSHTunnelForwarder P .UNINDENT .INDENT 0.0 .TP .B exception sshtunnel.HandlerSSHTunnelForwarderError(*args, **kwargs) استثنا برای خطاهای فورواردر تونل .UNINDENT .INDENT 0.0 .TP .B class sshtunnel.SSHTunnelForwarder(ssh_address_or_host=None, ssh_config_file=\(aq~/.ssh/config\(aq, ssh_host_key=None, ssh_password=None, ssh_pkey=None, ssh_private_key_password=None, ssh_proxy=None, ssh_proxy_enabled=True, ssh_username=None, local_bind_address=None, local_bind_addresses=None, logger=None, mute_exceptions=False, remote_bind_address=None, remote_bind_addresses=None, set_keepalive=5.0, threaded=True, compression=None, allow_agent=True, host_pkey_directories=None, *args, **kwargs) Bکلاس تونل SSH P .INDENT 7.0 .INDENT 3.5 .INDENT 0.0 .IP \(bu 2 راه‌اندازی اولیه یک تونل SSH به میزبان ریموت بر اساس آرگومان‌های ورودی .IP \(bu 2 .INDENT 2.0 .TP .B به صورت اختیاری: .INDENT 7.0 .IP \(bu 2 خواندن فایل پیکربندی SSH (معمولاً B~/.ssh/config P) .IP \(bu 2 بارگذاری کلیدها از یک عامل SSH فعال (مانند Pageant یا GNOME Keyring) .UNINDENT .UNINDENT .UNINDENT .UNINDENT .UNINDENT .sp خطاهای ایجادشده (Raises): .INDENT 7.0 .INDENT 3.5 .INDENT 0.0 .TP .B BBaseSSHTunnelForwarderError P: توسط متدهای کلاس SSHTunnelForwarder پرتاب می‌شود .TP .B BHandlerSSHTunnelForwarderError P: توسط ریسمان‌های فورواردر تونل پرتاب می‌شود .sp Bنکته: P .INDENT 7.0 .INDENT 3.5 ویژگی‌های Bmute_exceptions P و Braise_exception_if_any_forwarder_have_a_problem P (منسوخ‌شده) می‌توانند برای نادیده گرفتن اکثر استثناهای پرتاب‌شده از این کلاس استفاده شوند .UNINDENT .UNINDENT .UNINDENT .UNINDENT .UNINDENT .sp آرگومان‌های کلیدواژه‌ای: .INDENT 7.0 .INDENT 3.5 .INDENT 0.0 .TP .B ssh_address_or_host (tuple or str): آدرس IP یا نام میزبان BREMOTE GATEWAY P\&. می‌تواند یک تاپل دوعنصری ( Bstr P, Bint P) نشان‌دهنده به ترتیب IP و پورت باشد، یا یک Bstr P که تنها آدرس IP را مشخص می‌کند .sp افزوده شده در نسخه 0.0.4. .TP .B ssh_config_file (str): فایل پیکربندی SSH که خوانده خواهد شد. اگر صریحاً روی BNone P تنظیم شود، تجزیه این پیکربندی نادیده گرفته می‌شود .sp پیش‌فرض: BSSH_CONFIG_FILE P .sp افزوده شده در نسخه 0.0.4. .TP .B ssh_host_key (str): نمایشی از یک خط در فایل «known hosts» به سبک OpenSSH. .sp اثر انگشت کلید BREMOTE GATEWAY P با این کلید میزبان مقایسه می‌شود تا از جعل سرور SSH جلوگیری به عمل آید. هنگام استفاده از گذرواژه‌ها دارای اهمیت بالایی است تا تصادفاً اقدام به ورود به یک سیستم اشتباه (یا احتمالاً مهاجم) نشود .TP .B ssh_username (str): نام کاربری برای احراز هویت در BREMOTE SERVER P .sp پیش‌فرض: نام کاربر محلی جاری .TP .B ssh_password (str): متن نشان‌دهنده گذرواژه مورد استفاده برای اتصال به BREMOTE SERVER P یا برای باز کردن قفل کلید خصوصی. .sp Bنکته: P .INDENT 7.0 .INDENT 3.5 از نوشتن مستقیم گذرواژه محرمانه در کد خودداری کنید، زیرا ممکن است آشکار شده و سرویس شما را در برابر حملات آسیب‌پذیر سازد .UNINDENT .UNINDENT .TP .B ssh_port (int): شماره پورت اختیاری سرویس SSH در BREMOTE GATEWAY P، هنگامی که Issh_address_or_host\(ga P یک Bstr P نشان‌دهنده بخش IP از آدرس BREMOTE GATEWAY P باشد .sp پیش‌فرض: 22 .TP .B ssh_pkey (str or paramiko.PKey): نام فایل کلید Bخصوصی P ( Bstr P) برای دریافت کلید عمومی از آن، یا یک کلید Bعمومی P ( Bparamiko.pkey.PKey P \%) .TP .B ssh_private_key_password (str): گذرواژه برای یک Bssh_pkey P رمزگذاری‌شده .sp Bنکته: P .INDENT 7.0 .INDENT 3.5 از نوشتن مستقیم گذرواژه محرمانه در کد خودداری کنید، زیرا ممکن است آشکار شده و سرویس شما را در برابر حملات آسیب‌پذیر سازد .UNINDENT .UNINDENT .TP .B ssh_proxy (socket\-like object or tuple): پروکسی که تمامی ترافیک SSH از آن عبور داده خواهد شد. می‌تواند به عنوان مثال یک نمونه از Bparamiko.proxy.ProxyCommand P \% باشد. برای اطلاعات بیشتر، به مستندات پارامتر sock در Bparamiko.transport.Transport P \% یا BProxyCommand P در Bssh_config(5) P مراجعه کنید. .sp همچنین امکان مشخص کردن آدرس پروکسی به صورت یک تاپل از نوع ( Bstr P, Bint P) نشان‌دهنده IP و پورت پروکسی وجود دارد .sp Bنکته: P .INDENT 7.0 .INDENT 3.5 اگر Bssh_proxy_enabled P برابر False باشد نادیده گرفته می‌شود .UNINDENT .UNINDENT .sp افزوده شده در نسخه 0.0.5. .TP .B ssh_proxy_enabled (boolean): فعال/غیرفعال‌سازی پروکسی SSH. اگر True باشد و Bssh_config_file P کاربر حاوی یک دستورالعمل BProxyCommand P باشد که با Bssh_address_or_host P مشخص‌شده مطابقت کند، یک شیء Bparamiko.proxy.ProxyCommand P \% ایجاد می‌شود که تمام ترافیک SSH از طریق آن عبور داده خواهد شد .sp پیش‌فرض: BTrue P .sp افزوده شده در نسخه 0.0.4. .TP .B local_bind_address (tuple): تاپل محلی در قالب ( Bstr P, Bint P) نشان‌دهنده IP و پورت سمت محلی تونل. هر دو عنصر تاپل اختیاری هستند، بنابراین هر دو مقدار B(\(aq\(aq, 8000) P و B(\(aq10.0.0.1\(aq, ) P مقادیر معتبری هستند .sp پیش‌فرض: B(\(aq0.0.0.0\(aq, RANDOM_PORT) P .sp تغییر یافته در نسخه 0.0.8: افزوده شدن قابلیت استفاده از سوکت دامنه یونیکس به عنوان آدرس bind محلی .TP .B local_bind_addresses (list[tuple]): در صورتی که بیش از یک تونل به طور همزمان برقرار شود، می‌توان فهرستی از تاپل‌ها (با همان قالب Blocal_bind_address P) مانند [(ip1, port_1), (ip_2, port2), ...] را مشخص کرد .sp پیش‌فرض: B[local_bind_address] P .sp افزوده شده در نسخه 0.0.4. .TP .B remote_bind_address (tuple): تاپل ریموت در قالب ( Bstr P, Bint P) نشان‌دهنده IP و پورت سمت ریموت تونل. .TP .B remote_bind_addresses (list[tuple]): در صورتی که بیش از یک تونل به طور همزمان برقرار شود، می‌توان فهرستی از تاپل‌ها (با همان قالب Bremote_bind_address P) مانند [(ip1, port_1), (ip_2, port2), ...] را مشخص کرد .sp پیش‌فرض: B[remote_bind_address] P .sp افزوده شده در نسخه 0.0.4. .TP .B allow_agent (boolean): فعال/غیرفعال‌سازی بارگذاری کلیدها از یک عامل SSH .sp پیش‌فرض: BTrue P .sp افزوده شده در نسخه 0.0.8. .TP .B host_pkey_directories (list): جستجو برای کلیدهای pkey در پوشه‌های موجود در این فهرست، برای مثال [\(aq~/.ssh\(aq]. .sp پیش‌فرض: BNone P (غیرفعال) .sp افزوده شده در نسخه 0.1.4. .TP .B compression (boolean): فعال/غیرفعال‌سازی فشرده‌سازی انتقال داده. به صورت پیش‌فرض فشرده‌سازی غیرفعال است زیرا ممکن است بر نشست‌های تعاملی اثر منفی بگذارد .sp پیش‌فرض: BFalse P .sp افزوده شده در نسخه 0.0.8. .TP .B logger (logging.Logger): نمونه لاگر برای sshtunnel و paramiko .sp پیش‌فرض: نمونه Blogging.Logger P \% همراه با یک کنترل‌کننده منفرد Blogging.StreamHandler P \% و سطح BDEFAULT_LOGLEVEL P .sp افزوده شده در نسخه 0.0.3. .TP .B mute_exceptions (boolean): امکان نادیده گرفتن استثناهای BBaseSSHTunnelForwarderError P یا BHandlerSSHTunnelForwarderError P در صورت فعال بودن .sp پیش‌فرض: BFalse P .sp افزوده شده در نسخه 0.0.8. .TP .B set_keepalive (float): بازه زمانی به ثانیه که مشخص می‌کند در صورت ارسال نشدن داده روی اتصال، یک بسته I\(aqkeepalive\(aq P ارسال شود (و توسط میزبان ریموت نادیده گرفته شود). این گزینه برای زنده نگه داشتن اتصالات روی NAT مفید است. برای غیرفعال کردن keepalive می‌توانید مقدار آن را روی 0.0 قرار دهید. .sp پیش‌فرض: 5.0 (هیچ بسته keepalive ارسال نمی‌شود) .sp افزوده شده در نسخه 0.0.7. .TP .B threaded (boolean): امکان برقراری اتصالات همزمان روی یک تونل واحد .sp پیش‌فرض: BTrue P .sp افزوده شده در نسخه 0.0.3. .TP .B ssh_address (str): جایگزین‌شده توسط Bssh_address_or_host P، تاپلی از نوع (str, int) نشان‌دهنده IP و پورت BREMOTE SERVER P .sp منسوخ‌شده از نسخه 0.0.4. .TP .B ssh_host (str): جایگزین‌شده توسط Bssh_address_or_host P، تاپلی از نوع (str, int) نشان‌دهنده IP و پورت BREMOTE SERVER P .sp منسوخ‌شده از نسخه 0.0.4. .TP .B ssh_private_key (str or paramiko.PKey): جایگزین‌شده توسط Bssh_pkey P، که می‌تواند نشان‌دهنده نام فایل کلید Bخصوصی P ( Bstr P) یا یک کلید Bعمومی P ( Bparamiko.pkey.PKey P \%) باشد .sp منسوخ‌شده از نسخه 0.0.8. .TP .B raise_exception_if_any_forwarder_have_a_problem (boolean): امکان نادیده گرفتن استثناهای BBaseSSHTunnelForwarderError P یا BHandlerSSHTunnelForwarderError P در صورت تنظیم روی False .sp پیش‌فرض: BTrue P .sp افزوده شده در نسخه 0.0.4. .sp منسوخ‌شده از نسخه 0.0.8: (به جای آن از Bmute_exceptions P استفاده کنید) .UNINDENT .UNINDENT .UNINDENT .sp ویژگی‌ها (Attributes): .INDENT 7.0 .INDENT 3.5 .INDENT 0.0 .TP .B tunnel_is_up (dict): توصیف اینکه آیا سمت دیگر تونل فعال گزارش شده است (و ما باید آن را ببندیم) یا خیر (صرف‌نظر کردن از بستن آن تونل) .sp Bنکته: P .INDENT 7.0 .INDENT 3.5 این ویژگی نباید دستکاری شود .UNINDENT .UNINDENT .sp Bنکته: P .INDENT 7.0 .INDENT 3.5 هنگامی که Bskip_tunnel_checkup P غیرفعال باشد یا اتصال محلی یک سوکت یونیکس باشد، این مقدار همواره BTrue P خواهد بود .UNINDENT .UNINDENT .sp Bمثال P: .INDENT 7.0 .INDENT 3.5 .sp .EX {(\(aq127.0.0.1\(aq, 55550): True, # this tunnel is up (\(aq127.0.0.1\(aq, 55551): False} # this one isn\(aqt .EE .UNINDENT .UNINDENT .sp که در آن 55550 و 55551 پورت‌های bind محلی هستند .TP .B skip_tunnel_checkup (boolean): غیرفعال‌سازی بررسی تونل (پیش‌فرض برای سازگاری با نسخه‌های پیشین). .sp افزوده شده در نسخه 0.1.0. .UNINDENT .UNINDENT .UNINDENT .INDENT 7.0 .TP .B daemon_forward_servers = True پرچم‌گذاری ریسمان‌های تونل در حالت دیمن (daemon) .UNINDENT .INDENT 7.0 .TP .B daemon_transport = True پرچم‌گذاری ریسمان انتقال SSH در حالت دیمن (daemon) .UNINDENT .INDENT 7.0 .TP .B local_is_up(target) بررسی فعال بودن یک تونل (میزبان مقصد ریموت روی پورت TCP مقصد در دسترس است) .INDENT 7.0 .TP .B آرگومان‌ها: .INDENT 7.0 .TP .B target (tuple): تاپلی از نوع ( Bstr P, Bint P) نشان‌دهنده آدرس IP و پورت شنود .UNINDENT .TP .B مقدار بازگشتی: boolean .UNINDENT .sp منسوخ‌شده از نسخه 0.1.0: جایگزین‌شده توسط Bcheck_tunnels() P و Btunnel_is_up P .UNINDENT .INDENT 7.0 .TP .B check_tunnels() بررسی برقرار بودن تمامی تونل‌ها و مقداردهی Btunnel_is_up P .UNINDENT .INDENT 7.0 .TP .B static get_agent_keys(logger=None) بارگذاری کلیدهای عمومی از هر عامل SSH در دسترس .INDENT 7.0 .TP .B آرگومان‌ها: logger (Optional[logging.Logger]) .TP .B مقدار بازگشتی: list .UNINDENT .UNINDENT .INDENT 7.0 .TP .B static get_keys(logger=None, host_pkey_directories=None, allow_agent=False) بارگذاری کلیدهای عمومی از هر عامل SSH موجود یا پوشه محلی \&.ssh. .INDENT 7.0 .TP .B آرگومان‌ها: logger (Optional[logging.Logger]) .INDENT 7.0 .TP .B host_pkey_directories (Optional[list[str]]): فهرستی از پوشه‌های محلی که کلیدهای pkey میزبان SSH با قالب \(dqid_*\(dq در آن‌ها جستجو می‌شوند. برای مثال [\(aq~/.ssh\(aq] .sp افزوده شده در نسخه 0.1.0. .TP .B allow_agent (Optional[boolean]): بارگذاری یا عدم بارگذاری کلیدها از عامل SSH .sp پیش‌فرض: False .UNINDENT .TP .B مقدار بازگشتی: list .UNINDENT .UNINDENT .INDENT 7.0 .TP .B static read_private_key_file(pkey_file, pkey_password=None, key_type=None, logger=None) دریافت کلید عمومی SSH از یک فایل کلید خصوصی با ارائه گذرواژه اختیاری .INDENT 7.0 .TP .B آرگومان‌ها: .INDENT 7.0 .TP .B pkey_file (str): فایل حاوی کلید خصوصی (RSA یا ECDSA) .UNINDENT .TP .B آرگومان‌های کلیدواژه‌ای: .INDENT 7.0 .TP .B pkey_password (Optional[str]): گذرواژه برای رمزگشایی کلید خصوصی .UNINDENT .sp logger (Optional[logging.Logger]) .TP .B مقدار بازگشتی: paramiko.Pkey .UNINDENT .UNINDENT .INDENT 7.0 .TP .B start() راه‌اندازی و شروع تونل‌های SSH .UNINDENT .INDENT 7.0 .TP .B stop(force=False) خاموش کردن تونل. به طور پیش‌فرض همواره تا بسته شدن تمامی اتصالات منتظر می‌مانیم. می‌توانید از Iforce=True P برای بستن اجباری اتصالات استفاده کنید .INDENT 7.0 .TP .B آرگومان‌های کلیدواژه‌ای: .INDENT 7.0 .TP .B force (bool): بستن اجباری اتصالات فعلی .sp پیش‌فرض: False .sp افزوده شده در نسخه 0.2.2. .UNINDENT .UNINDENT .sp Bنکته: P .INDENT 7.0 .INDENT 3.5 این مورد پیش از نسخه B0.1.0 P Bباید P با دقت مدیریت می‌شد: .INDENT 0.0 .IP \(bu 2 اگر یک فورواردینگ پورت باز باشد .IP \(bu 2 مقصد در دسترس نباشد .IP \(bu 2 تلاش برای اتصال به آن تونل صورت گیرد (بسته BSYN P ارسال و تأیید می‌شود، سپس یک بسته BFIN P ارسال شده که هرگز تأیید نمی‌شود... عجیب است) .IP \(bu 2 تلاش برای خاموش کردن انجام دهیم: این عملیات تا زمانی که مهلت زمانی BFIN_WAIT_2 P و BCLOSE_WAIT P سپری نشود موفقیت‌آمیز نخواهد بود. .UNINDENT .UNINDENT .UNINDENT .sp Bنکته: P .INDENT 7.0 .INDENT 3.5 این سناریوها را با Btunnel_is_up P مدیریت کنید: در صورت False بودن، فراخوانی متد Bshutdown() P سرور برای آن تونل نادیده گرفته می‌شود .UNINDENT .UNINDENT .UNINDENT .INDENT 7.0 .TP .B close() متوقف کردن یک تونل فعال، نام مستعار برای Bstop() P .UNINDENT .INDENT 7.0 .TP .B restart() راه‌اندازی مجدد اتصال به درگاه و تونل‌ها .UNINDENT .INDENT 7.0 .TP .B property local_bind_ports بازگرداندن فهرستی شامل پورت‌های سمت محلی تونل‌های TCP .UNINDENT .INDENT 7.0 .TP .B property local_bind_hosts بازگرداندن فهرستی شامل آدرس‌های IP شنودکننده برای تونل‌ها .UNINDENT .INDENT 7.0 .TP .B property local_bind_addresses بازگرداندن فهرستی از جفت‌های (IP, port) برای سمت محلی تونل‌ها .UNINDENT .INDENT 7.0 .TP .B property tunnel_bindings بازگرداندن یک دیکشنری شامل tunnel_bindings فعال local<>remote .UNINDENT .INDENT 7.0 .TP .B property is_active بازگرداندن True در صورت فعال بودن انتقال SSH زیرین .UNINDENT .UNINDENT .INDENT 0.0 .TP .B sshtunnel.open_tunnel(*args, **kwargs) باز کردن یک تونل SSH، لایه پوششی (wrapper) برای BSSHTunnelForwarder P .INDENT 7.0 .TP .B آرگومان‌ها: .INDENT 7.0 .TP .B destination (Optional[tuple]): آدرس IP و پورت سرور SSH در قالب ( Bssh_address P, Bssh_port P) .UNINDENT .TP .B آرگومان‌های کلیدواژه‌ای: .INDENT 7.0 .TP .B debug_level (Optional[int or str]): سطح لاگ برای نمونه Blogging.Logger P \%، به عنوان مثال BDEBUG P .TP .B skip_tunnel_checkup (boolean): فعال/غیرفعال‌سازی بررسی سمت محلی و مقداردهی Btunnel_is_up P .sp پیش‌فرض: True .sp افزوده شده در نسخه 0.1.0. .UNINDENT .UNINDENT .sp Bنکته: P .INDENT 7.0 .INDENT 3.5 تنظیم مقدار Bdebug_level P روی 1 == BTRACE P حالت ردیابی را فعال می‌کند .UNINDENT .UNINDENT .sp Bنکته: P .INDENT 7.0 .INDENT 3.5 برای آرگومان‌های کلیدواژه‌ای به BSSHTunnelForwarder P مراجعه کنید .UNINDENT .UNINDENT .sp Bمثال P: .INDENT 7.0 .INDENT 3.5 .sp .EX from sshtunnel import open_tunnel with open_tunnel(SERVER, ssh_username=SSH_USER, ssh_port=22, ssh_password=SSH_PASSWORD, remote_bind_address=(REMOTE_HOST, REMOTE_PORT), local_bind_address=(\(aq\(aq, LOCAL_PORT)) as server: def do_something(port): pass print(\(dqLOCAL PORTS:\(dq, server.local_bind_port) do_something(server.local_bind_port) .EE .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .IP \(bu 2 Cameron Maske \% .IP \(bu 2 Gustavo Machado \% .IP \(bu 2 Colin Jermain \% .IP \(bu 2 JM Fernández \% \- (تشکر فراوان!) .IP \(bu 2 Lewis Thompson \% .IP \(bu 2 Erik Rogers \% .IP \(bu 2 Mart Sõmermaa \% .IP \(bu 2 Chronial \% .IP \(bu 2 Dan Harbin \% .IP \(bu 2 Ignacio Peluffo \% .IP \(bu 2 Niels Zeilemaker \% .IP \(bu 2 Georgy Rylov \% .IP \(bu 2 Eddie Chiang \% .IP \(bu 2 kkrasovskii \% .UNINDENT .INDENT 0.0 .IP \(bu 2 .INDENT 2.0 .TP .B v.0.4.0 (Pahaz \%) .INDENT 7.0 .IP \(bu 2 تغییر پرچم حالت daemon برای تمام ریسمان‌های تونل (به طور کامل سازگار با نسخه‌های پیشین نیست) جهت جلوگیری از قفل شدن غیرمنتظره (#219 \%) .IP \(bu 2 افزودن آزمون‌های عملکردی سرتاسری مبتنی بر داکر برای Mongo/Postgres/MySQL (#219 \%) .IP \(bu 2 افزودن آزمون‌های قفل شدن سرتاسری مبتنی بر داکر (#219 \%) .UNINDENT .UNINDENT .IP \(bu 2 .INDENT 2.0 .TP .B v.0.3.2 (Pahaz \%, JM Fernández \%) .INDENT 7.0 .IP \(bu 2 اصلاح تشخیص پوشه کلید میزبان .IP \(bu 2 یکپارچه‌سازی پوشه پیش‌فرض پیکربندی ssh به I~/.ssh P .UNINDENT .UNINDENT .IP \(bu 2 .INDENT 2.0 .TP .B v.0.3.1 (Pahaz \%) .INDENT 7.0 .IP \(bu 2 افزایش مهلت زمانی اتصال باز به ۱۰ ثانیه .UNINDENT .UNINDENT .IP \(bu 2 .INDENT 2.0 .TP .B v.0.3.0 (Pahaz \%) .INDENT 7.0 .IP \(bu 2 تغییر رفتار پیش‌فرض context با دستور with به استفاده از I\&.stop(force=True) P در هنگام خروج (به طور کامل سازگار با نسخه‌های پیشین نیست) .IP \(bu 2 حذف ترفند بلااستفاده Idaemon_forward_servers = True P برای جلوگیری از قفل شدن (به طور کامل سازگار با نسخه‌های پیشین نیست) .IP \(bu 2 تنظیم پیش‌فرض keepalive انتقال روی ۵ ثانیه (برای نسخه‌های کمتر از 0.3.0 غیرفعال بود) .IP \(bu 2 تنظیم مهلت زمانی پیش‌فرض انتقال به 0.1 .IP \(bu 2 منسوخ‌سازی و حذف گزینه Iblock_on_close P .IP \(bu 2 رفع مشکل بن‌بست‌ها (deadlocks) / قفل شدن تونل‌ها (#173 \%) .UNINDENT .UNINDENT .IP \(bu 2 .INDENT 2.0 .TP .B v.0.2.2 (Pahaz \%) .INDENT 7.0 .IP \(bu 2 افزودن متد I\&.stop(force=True) P برای بستن اجباری اتصالات فعال (#201 \%) .UNINDENT .UNINDENT .IP \(bu 2 .INDENT 2.0 .TP .B v.0.2.1 (Pahaz \%, Eddie Chiang \% and kkrasovskii \%) .INDENT 7.0 .IP \(bu 2 رفع اشکال ریسمان یتیم برای تونلی که قطع شده است (DOWN) (#170 \%) .UNINDENT .UNINDENT .IP \(bu 2 .INDENT 2.0 .TP .B v.0.2.0 (Georgy Rylov \%) .INDENT 7.0 .IP \(bu 2 پشتیبانی از IPv6 بدون فرمان پراکسی. استفاده از منطق توکار paramiko برای ایجاد سوکت. این منطق تلاش می‌کند از IPv6 استفاده کند و در صورت عدم موفقیت به IPv4 برمی‌گردد (#139 \%) .UNINDENT .UNINDENT .IP \(bu 2 .INDENT 2.0 .TP .B v.0.1.5 (JM Fernández \%) .INDENT 7.0 .IP \(bu 2 معرفی ویژگی Iblock_on_close P .UNINDENT .UNINDENT .IP \(bu 2 .INDENT 2.0 .TP .B v.0.1.4 (Niels Zeilemaker \%) .INDENT 7.0 .IP \(bu 2 امکان بارگذاری کلیدهای pkey از I~/.ssh P .UNINDENT .UNINDENT .IP \(bu 2 .INDENT 2.0 .TP .B v.0.1.3 (Ignacio Peluffo \% and others) .INDENT 7.0 .IP \(bu 2 به‌روزرسانی پارامتر Bpkey_file P برای پذیرش مسیرهای نسبی به پوشه کاربر با استفاده از B~ P .IP \(bu 2 چندین رفع اشکال .UNINDENT .UNINDENT .IP \(bu 2 .INDENT 2.0 .TP .B v.0.1.2 (JM Fernández \%) .INDENT 7.0 .IP \(bu 2 رفع اشکال #77 .UNINDENT .UNINDENT .IP \(bu 2 .INDENT 2.0 .TP .B v.0.1.1 (JM Fernández \%) .INDENT 7.0 .IP \(bu 2 رفع اشکال #72 .UNINDENT .UNINDENT .IP \(bu 2 .INDENT 2.0 .TP .B v.0.1.0 (JM Fernández \%) .INDENT 7.0 .IP \(bu 2 افزودن ویژگی Itunnel_bindings P .IP \(bu 2 چندین رفع اشکال (#49, #56, #57, #59, #60, #62, #64, #66, ...) (Pahaz \%, JM Fernández \%) .IP \(bu 2 افزودن سطح لاگ TRACE (JM Fernández \%) .IP \(bu 2 بازآرایی کد و تست‌ها (JM Fernández \%) .IP \(bu 2 پایان پشتیبانی از python3.2 .UNINDENT .UNINDENT .IP \(bu 2 .INDENT 2.0 .TP .B v.0.0.8 (JM Fernández \%) .INDENT 7.0 .IP \(bu 2 ادغام #31 \%: پشتیبانی از فورواردینگ سوکت دامنه یونیکس (محلی) (Dan Harbin \%) .IP \(bu 2 ساده‌سازی API (JM Fernández \%) .IP \(bu 2 افزودن مستندات مبتنی بر اسفینکس (JM Fernández \%) .IP \(bu 2 افزودن Ballow_agent P (رفع #36 \%, #46 \%) (JM Fernández \%) .IP \(bu 2 افزودن Bcompression P (JM Fernández \%) .IP \(bu 2 افزودن متد B__str__ P (JM Fernández \%) .IP \(bu 2 افزودن توابع آزمون (JM Fernández \%) .IP \(bu 2 اصلاح نام کاربری پیش‌فرض هنگام عدم ارائه و صرف‌نظر شدن از فایل ssh_config (JM Fernández \%) .IP \(bu 2 اصلاح دریافت استثنای نامعتبر بودن یا حل نشدن IP درگاه (JM Fernández \%) .IP \(bu 2 اصلاحات جزئی (JM Fernández \%) .IP \(bu 2 افزودن پشتیبانی از AppVeyor (JM Fernández \%) .UNINDENT .UNINDENT .IP \(bu 2 .INDENT 2.0 .TP .B v.0.0.7 (JM Fernández \%) .INDENT 7.0 .IP \(bu 2 اکنون تونل‌ها می‌توانند با اطمینان متوقف و مجدداً راه‌اندازی شوند (#41 \%) (JM Fernández \%) .IP \(bu 2 افزودن مهلت زمانی به درگاه SSH و پیام‌های keep\-alive (#29 \%) (JM Fernández \%) .IP \(bu 2 امکان ارسال مستقیم یک pkey (#43 \%) (Chronial \%) .IP \(bu 2 افزودن گزینه B\-V P در CLI برای نمایش نسخه فعلی (JM Fernández \%) .IP \(bu 2 افزودن آزمون پوشش کد (JM Fernández \%) .IP \(bu 2 بازآرایی ساختار کد (JM Fernández \%) .UNINDENT .UNINDENT .IP \(bu 2 .INDENT 2.0 .TP .B v.0.0.6 (Pahaz \%) .INDENT 7.0 .IP \(bu 2 افزودن گزینه B\-S P در CLI برای پشتیبانی از گذرواژه کلید خصوصی ssh (Pahaz \%) .UNINDENT .UNINDENT .IP \(bu 2 .INDENT 2.0 .TP .B v.0.0.5 (Pahaz \%) .INDENT 7.0 .IP \(bu 2 افزودن آرگومان Bssh_proxy P و همچنین پشتیبانی از BProxyCommand P در Bssh_config(5) P (Lewis Thompson \%) .IP \(bu 2 افزودن برخی اصلاحات برای سازگاری با پایتون ۲.۶ (Mart Sõmermaa \%) .IP \(bu 2 به ارث بردن هندلرهای لاگرهای ارسال‌شده به BSSHTunnelForwarder P توسط Bparamiko.transport P (JM Fernández \%) .IP \(bu 2 رفع اشکال #34 \%، شماره #33 \% (Pahaz \%) .IP \(bu 2 افزودن آزمون‌ها (Pahaz \%) .IP \(bu 2 افزودن یکپارچه‌سازی CI (Pahaz \%) .IP \(bu 2 بسته‌بندی استاندارد (Pahaz \%) .IP \(bu 2 غیرفعال‌سازی بررسی اتصال سوکت مقصد توسط BSSHTunnelForwarder.local_is_up P (Pahaz \%) .IP \(bu 2 استفاده از daemon mode = False در تمامی ریسمان‌ها به صورت پیش‌فرض؛ جزئیات: \% .UNINDENT .UNINDENT .IP \(bu 2 .INDENT 2.0 .TP .B v.0.0.4.4 (Pahaz \%) .INDENT 7.0 .IP \(bu 2 رفع اشکال شماره #24 \% \- پنهان کردن گذرواژه ssh در لاگ‌ها (Pahaz \%) .UNINDENT .UNINDENT .IP \(bu 2 .INDENT 2.0 .TP .B v.0.0.4.3 (Pahaz \%) .INDENT 7.0 .IP \(bu 2 رفع اشکال پورت پیش‌فرض شماره #19 \% (Pahaz \%) .UNINDENT .UNINDENT .IP \(bu 2 .INDENT 2.0 .TP .B v.0.0.4.2 (Pahaz \%) .INDENT 7.0 .IP \(bu 2 اصلاح حالت Thread.daemon برای نسخه پایتون < 3.3 شماره #16 \% (Pahaz \%) .UNINDENT .UNINDENT .IP \(bu 2 .INDENT 2.0 .TP .B v.0.0.4.1 (Pahaz \%) .INDENT 7.0 .IP \(bu 2 رفع مشکلات CLI شماره #13 \% (Pahaz \%) .UNINDENT .UNINDENT .IP \(bu 2 .INDENT 2.0 .TP .B v.0.0.4 (Pahaz \%) .INDENT 7.0 .IP \(bu 2 حالت daemon به صورت پیش‌فرض برای تمام ریسمان‌ها (JM Fernández \%, Pahaz \%) .IP \(bu 2 انتقال Bmake_ssh_forward_server P به BSSHTunnelForwarder.make_ssh_forward_server P (Pahaz \%) .IP \(bu 2 انتقال Bmake_ssh_forward_handler P به BSSHTunnelForwarder.make_ssh_forward_handler_class P (Pahaz \%) .IP \(bu 2 تغییر نام Bopen P به Bopen_tunnel P (JM Fernández \%) \- تشکر فراوان! .IP \(bu 2 افزودن رابط خط فرمان CLI (JM Fernández \%) .IP \(bu 2 پشتیبانی از باز کردن همزمان چندین تونل (JM Fernández \%) .IP \(bu 2 بهبود پایداری و خوانایی کد (JM Fernández \%, Pahaz \%) .IP \(bu 2 بهبود سیستم ثبت رویدادها و لاگ‌ها (JM Fernández \%, Pahaz \%) .IP \(bu 2 افزودن آرگومان Braise_exception_if_any_forwarder_have_a_problem P برای باز کردن چندین تونل همزمان (Pahaz \%) .IP \(bu 2 افزودن پشتیبانی از آرگومان Bssh_config_file P (JM Fernández \%) .IP \(bu 2 افزودن پشتیبانی از Python 3 (JM Fernández \%, Pahaz \%) .UNINDENT .UNINDENT .IP \(bu 2 .INDENT 2.0 .TP .B v.0.0.3 (Pahaz \%) .INDENT 7.0 .IP \(bu 2 افزودن گزینه Bthreaded P (Cameron Maske \%) .IP \(bu 2 اصلاح پیام خطای استثنا، چاپ صحیح آدرس مقصد (Gustavo Machado \%) .IP \(bu 2 اصلاح خطای Bpip install P (Colin Jermain \%, Pahaz \%) .UNINDENT .UNINDENT .IP \(bu 2 .INDENT 2.0 .TP .B v.0.0.1 (Pahaz \%) .INDENT 7.0 .IP \(bu 2 کلاس BSSHTunnelForwarder P (Pahaz \%) .IP \(bu 2 تابع Bopen P (Pahaz \%) .UNINDENT .UNINDENT .UNINDENT .sp حق نشر (c) 2014\-2019 Pahaz White .sp بدین‌وسیله به هر شخصی که نسخه‌ای از این نرم‌افزار و پرونده‌های مستندات مربوطه (معروف به «نرم‌افزار») را دریافت می‌کند، بدون پرداخت هزینه و بدون محدودیت، شامل حقوق استفاده، کپی، تغییر، ادغام، انتشار، توزیع، اعطای مجوز فرعی و/یا فروش نسخه‌های نرم‌افزار اجازه داده می‌شود، مشروط بر اینکه اطلاعیه حق نشر فوق و این مجوز در تمامی نسخه‌ها یا بخش‌های عمده نرم‌افزار گنجانده شود. .sp این نرم‌افزار «به همان صورتی که هست» ارائه می‌شود، بدون هیچ‌گونه ضمانت صریح یا ضمنی، از جمله ضمانت‌های تجاری بودن یا مناسب بودن برای یک هدف خاص. در هیچ شرایطی نویسندگان یا دارندگان حق نشر مسئولیتی در قبال هرگونه ادعا، خسارت یا سایر مسئولیت‌ها نخواهند داشت. .SH "نویسنده (AUTHOR)" Pahaz White .SH "حق نشر (COPYRIGHT)" 2014-2020, Pahaz White and contributors \." End of generated man page.